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')
-- يعيد التاريخ الحالي

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

-- الحصول على السنة
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، الأحد هو 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() للتقريب إلى أعداد صحيحة.

ورقة مرجعية

يوفر SQL العديد من الوظائف المفيدة لمعالجة وتنسيق التواريخ:

  • DATE() - يحول سلسلة نصية إلى تاريخ
  • STRFTIME() - ينسق التواريخ وفقاً لمعايير محددة
  • DATE('now') - يحصل على التاريخ الحالي

تحويل سلسلة نصية إلى تاريخ:

SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15

SELECT DATE('now')
-- Returns current date

استخراج أجزاء التاريخ باستخدام STRFTIME():

-- 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
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

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

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

الاستخدام في جمل WHERE:

-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')

حساب فروق التواريخ باستخدام JULIANDAY():

JULIANDAY(end_date) - JULIANDAY(start_date)

جرّب بنفسك

quiz iconاختبر نفسك

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

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