سلسلة دروس SQL| التواريخ
هذه المقالة جزء من سلسلة دروس SQL، يمكنك الاطلاع على الفهرس
تواريخ SQL
أصعب جزء عند العمل مع التواريخ هو التأكد من أن تنسيق التاريخ الذي تحاول إدراجه يتطابق مع تنسيق عمود التاريخ في قاعدة البيانات.
طالما أن بياناتك تحتوي على جزء التاريخ فقط، فستعمل الاستعلامات على النحو المتوقع و لن يكون هناك أي مشاكل لكن إذا كان جزء من التاريخ متضمنًا أموراً أخرى، فإن الأمر يصبح أكثر تعقيدًا
أنواع بيانات التاريخ في SQL
يأتي MySQL مع أنواع البيانات التالية لتخزين تاريخ أو قيمة تاريخ /وقت في قاعدة البيانات:
-
DATE - تنسيق YYYY-MM-DD
-
DATETIME - التنسيق: YYYY-MM-DD HH: MI: SS
-
TIMESTAMP - التنسيق: YYYY-MM-DD HH: MI: SS
-
YEAR - تنسيق YYYY أو YY
يأتي SQL Server مع أنواع البيانات التالية لتخزين تاريخ أو قيمة تاريخ /وقت في قاعدة البيانات:
*DATE - تنسيق YYYY-MM-DD
-
DATETIME - التنسيق: YYYY-MM-DD HH: MI: SS
-
SMALLDATETIME - التنسيق: YYYY-MM-DD HH: MI: SS
-
TIMESTAMP - التنسيق: رقم فريد “unique number”
ملاحظة: يتم اختيار أنواع التاريخ لعمود عند إنشاء جدول جديد في قاعدة البيانات الخاصة بك!
العمل مع التواريخ في SQL
يمكنك مقارنة تاريخين بسهولة إذا لم يكن هناك عنصر وقت متضمن أي اذا لم يحتوي التاريخ على معلومات لساعة معينة مثلاً
افترض أن لدينا جدول “الطلبات” التالي:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
نريد الآن تحديد السجلات ذات تاريخ الطلب “2008-11-11” من الجدول أعلاه.
نستخدم عبارة SELECT التالية:
1
2
3
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
ستبدو مجموعة النتائج كما يلي:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
الآن ،افترض أن جدول “الطلبات” يبدو مثل هذا (لاحظ مكون الوقت في عمود “تاريخ الطلب”):
OrderId | ProductName | OrderDate |
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
إذا استخدمنا نفس عبارة SELECT المذكورة أعلاه:
1
2
3
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
لن نحصل على نتيجة! وذلك لأن الاستعلام يبحث فقط عن التواريخ بدون جزء من الوقت.
نصيحة: للحفاظ على استفساراتك بسيطة وسهلة الصيانة ، لا تسمح بمكونات الوقت في التواريخ الخاصة بك!
التالي: Views