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

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

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

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

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

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

SELECT DATE('2023-05-15 13:45:00')
-- يُرجع: 2023-05-15

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

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

-- احصل على السنة
SELECT STRFTIME('%Y', '2023-05-15')
-- يُرجع: 2023

-- احصل على الشهر
SELECT STRFTIME('%m', '2023-05-15')
-- يُرجع: 05

-- احصل على اليوم
SELECT STRFTIME('%d', '2023-05-15')
-- يُرجع: 15

-- أظهر مزيجًا من السنة واليوم (يمكن استخدام أي فاصل)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- يُرجع: 2023:15

-- استخدم فاصل شرطة بدلاً من ذلك
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- يُرجع: 15-05-2023

-- احصل على يوم الأسبوع
SELECT STRFTIME('%w', '2023-05-15')
-- يُرجع: 1 (الاثنين؛ الأحد هو 0)

مواصفات التنسيق الشائعة:

  • %Y: السنة (4 أرقام)
  • %m: الشهر (01-12)
  • %d: يوم الشهر (01-31)
  • %w: يوم الأسبوع (0-6، Sunday هو 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

التحدي

سهل

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

  • events: id، start، end

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

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

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

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

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

جرّب بنفسك

quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ SQL