Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التعامل مع التواريخ - الجزء 3

جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 33 من 72.

يوفر SQL العديد من الوظائف المفيدة لمعالجة وتنسيق التواريخ. إليك بعض وظائف التاريخ الشائعة:

  1. DATE() - يحول سلسلة نصية إلى تاريخ
  2. STRFTIME() - يُنسق التواريخ وفقاً لمعايير محددة
  3. DATE('now') - يجلب التاريخ الحالي:

على سبيل المثال، تحويل السلسلة النصية إلى تاريخ:

SELECT DATE('2023-05-15 13:45:00')
-- يعيد: 2023-05-15

SELECT DATE('now')
-- يعيد التاريخ الحالي

على سبيل المثال، استخراج السنة والشهر واليوم من التاريخ:

-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023

-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05

-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15

-- Show combination of year and day (any separator can be used)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

-- Use a dash separator instead
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Returns: 15-05-2023

-- Get day of week
SELECT STRFTIME('%w', '2023-05-15')
-- Returns: 1 (Monday; Sunday is 0)

محددات التنسيق الشائعة:

  • %Y: السنة (4 أرقام)
  • %m: الشهر (01-12)
  • %d: يوم الشهر (01-31)
  • %w: يوم الأسبوع (0-6، الأحد هو 0)
  • %H: الساعة (00-23)
  • %M: الدقيقة (00-59)
  • %S: الثانية (00-59)

يمكنك استخدام أي حرف فاصل بين المحددات (على سبيل المثال -، :، /). على سبيل المثال، كل من STRFTIME('%d-%m-%Y', date) و STRFTIME('%d:%m:%Y', date) يجمعان بين اليوم والشهر والسنة — فقط بفواصل مختلفة.

يمكنك دمج هذه الدوال في الاستعلامات:

-- البحث عن جميع السجلات من السنة الحالية
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • <strong>events</strong>: <strong>id</strong>, <strong>start</strong>, <strong>end</strong>

اكتب استعلاماً يعرض:

  • معرف الحدث (ID)
  • تاريخ البدء منسقاً كـ "DD-MM-YYYY". سمِّ هذا العمود formatted_start
  • تاريخ الانتهاء منسقاً كـ "DD-MM-YYYY". سمِّ هذا العمود formatted_end
  • المدة بالأيام بين البدء والانتهاء، مقربة إلى أقرب عدد صحيح. سمِّ هذا العمود duration_days

قم بتصفية الصفوف فقط التي تكون فيها السنة في عمود start هي 2009 (تعيد الدالة STRFTIME() سلسلة نصية وليس رقماً).

رتب النتائج حسب أيام المدة بترتيب تنازلي.

تذكير: لحساب الفرق بين التواريخ استخدم: JULIANDAY(end) - JULIANDAY(start) واستخدم ROUND() للتقريب إلى أعداد صحيحة.

جرّب بنفسك

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات