MySQL تعمل مع التواريخ
تواريخ MySQL
أصعب جزء عند التعامل مع التواريخ هو التأكد من أن تنسيق التاريخ الذي تحاول إدراجه يطابق تنسيق عمود التاريخ في قاعدة البيانات.
طالما أن بياناتك تحتوي على جزء التاريخ فقط ، فستعمل استعلاماتك كما هو متوقع. ومع ذلك ، إذا تم تضمين جزء من الوقت ، فإنه يصبح أكثر تعقيدًا.
أنواع بيانات تاريخ MySQL
يأتي MySQL مع أنواع البيانات التالية لتخزين تاريخ أو قيمة تاريخ / وقت في قاعدة البيانات:
-
DATE
- تنسيق YYYY-MM-DD -
DATETIME
- التنسيق: YYYY-MM-DD HH: MI: SS TIMESTAMP
- التنسيق: YYYY-MM-DD HH: MI: SS-
YEAR
- تنسيق YYYY أو YY
ملاحظة: يتم تعيين نوع بيانات التاريخ لعمود عند إنشاء جدول جديد في قاعدة البيانات الخاصة بك!
العمل مع التواريخ
انظر إلى الجدول التالي:
جدول الطلبات
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
البيان التالي:
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
البيان على النحو الوارد أعلاه:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
لن نحصل على نتيجة! هذا لأن الاستعلام يبحث فقط عن التواريخ التي ليس لها جزء زمني.
نصيحة: للإبقاء على استفساراتك بسيطة وسهلة الصيانة ، لا تستخدم مكونات الوقت في التواريخ الخاصة بك ، إلا إذا كنت مضطرًا لذلك!