التعامل مع التواريخ - الجزء 3
جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 33 من 72.
يوفر SQL العديد من الوظائف المفيدة لمعالجة وتنسيق التواريخ. إليك بعض وظائف التاريخ الشائعة:
DATE()- يحول سلسلة نصية إلى تاريخSTRFTIME()- يُنسق التواريخ وفقاً لمعايير محددة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')التحدي
سهلالجداول والأعمدة المتاحة:
<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() للتقريب إلى أعداد صحيحة.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGE