التعامل مع التواريخ - الجزء 3
جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 33 من 72.
يوفر SQL العديد من الوظائف المفيدة لمعالجة وتنسيق التواريخ. إليك بعض وظائف التاريخ الشائعة:
DATE()- تحويل سلسلة نصية إلى تاريخSTRFTIME()- تنسيق التواريخ وفقاً لمعايير محددة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')التحدي
سهلالجداول والأعمدة المتاحة:
<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)جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
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