مقدار NULL SQL
تاريخ SQL
من أصعب المهام عند التعامل مع التواريخ هو التأكد من أن تنسق صيغة التاريخ الذي يتم إدخاله مع صيغة عمود التاريخ في قاعدة البيانات.
إذا كانت البيانات تحتوي فقط على جزء التاريخ، فإن تشغيل الاستعلام لن يكون هناك مشكلة. ولكن إذا كانت تتضمن الوقت، فإن الأمور تصبح معقدة بعض الشيء.
قبل مناقشة تعقيدات استعلامات التاريخ، لننظر أولاً في أكثر الوظائف الداخلية المعالجة للبيانات أهمية.
وظائف تاريخ MySQL
يُظهر الجدول التالي قائمة بأهم الوظائف الداخلية للبيانات في MySQL:
الوظيفة | الوصف |
---|---|
NOW() | يعيد التاريخ والوقت الحالي |
CURDATE() | يعيد التاريخ الحالي |
CURTIME() | يعيد الوقت الحالي |
DATE() | يستخرج جزء التاريخ من التعبير التاريخي/زمني |
EXTRACT() | يعيد أجزاء تاريخ/وقت وفقًا للتاريخ |
DATE_ADD() | إضافة فترة زمنية محددة إلى التاريخ |
DATE_SUB() | طرح فترة زمنية محددة من التاريخ |
DATEDIFF() | يعيد عدد الأيام بين تاريخين |
DATE_FORMAT() | عرض تاريخ/وقت بأشكال مختلفة |
وظائف تاريخ SQL Server
يُظهر الجدول التالي قائمة بأهم الوظائف الداخلية للبيانات في SQL Server:
الوظيفة | الوصف |
---|---|
GETDATE() | يعيد التاريخ والوقت الحالي |
DATEPART() | يعيد أجزاء تاريخ/وقت منفردة |
DATEADD() | إضافة أو طرح فترات زمنية محددة في التاريخ |
DATEDIFF() | يعيد الفارق الزمني بين تاريخين |
CONVERT() | عرض تاريخ/وقت بأشكال مختلفة |
نوع تاريخ SQL
MySQL يستخدم الأنواع التالية لتحديد التواريخ أو قيم التاريخ/الوقت في قاعدة البيانات:
- DATE - نمط YYYY-MM-DD
- DATETIME - نمط: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - نمط: YYYY-MM-DD HH:MM:SS
- YEAR - نمط YYYY أو YY
يستخدم SQL Server النماط التالية لتخزين تواريخ أو قيم تاريخ/وقت في قاعدة البيانات:
- DATE - نمط YYYY-MM-DD
- DATETIME - نمط: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - نمط: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - نمط: عدد فريد
معالجة التواريخ في SQL
إذا لم يكن هناك جزء الوقت، فإننا يمكننا مقارنة تواريخ بسهولة!
لنفترض أن لدينا جدول "Orders" مثل هذا:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
الآن، نريد أن نختار السجلات التي تحتوي على OrderDate كـ "2008-12-26" من الجدول السابق.
نستخدم جملة SELECT التالية:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
مجموعة النتائج:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
الآن لنفترض أن "Orders" يشبه ما يلي (لاحظ جزء الوقت في عمود "OrderDate"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
إذا استخدمنا جملة SELECT أعلاه:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
لن نحصل على نتيجة. هذا بسبب أن التاريخ في هذا الاستعلام لا يحتوي على جزء الوقت.
نصيحة:إذا كنت ترغب في جعل الاستعلام بسيطًا وسهلًا الصيانة، فلا تستخدم جزء الوقت في التاريخ!