مقدار 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'

لن نحصل على نتيجة. هذا بسبب أن التاريخ في هذا الاستعلام لا يحتوي على جزء الوقت.

نصيحة:إذا كنت ترغب في جعل الاستعلام بسيطًا وسهلًا الصيانة، فلا تستخدم جزء الوقت في التاريخ!