في لغة SQL، تُستخدم أنواع بيانات التاريخ والوقت لتخزين قيم التاريخ والوقت. تختلف أنواع البيانات المتاحة قليلاً بين أنظمة إدارة قواعد البيانات المختلفة (مثل MySQL، PostgreSQL، SQL Server، Oracle)، ولكن هناك بعض الأنواع الشائعة:
أنواع البيانات الشائعة:
- DATE: يُستخدم لتخزين التاريخ فقط (السنة، الشهر، اليوم). لا يتضمن معلومات الوقت.
- مثال:
2024-10-27
- مثال:
- TIME: يُستخدم لتخزين الوقت فقط (الساعة، الدقيقة، الثانية). لا يتضمن معلومات التاريخ.
- مثال:
14:30:00
(الساعة 2:30 بعد الظهر)
- مثال:
- DATETIME (أو TIMESTAMP في بعض الأنظمة): يُستخدم لتخزين كل من التاريخ والوقت.
- مثال:
2024-10-27 14:30:00
- مثال:
- YEAR: يُستخدم لتخزين السنة فقط.
- مثال:
2024
- مثال:
أنواع بيانات أخرى (أكثر تحديدًا):
بعض أنظمة قواعد البيانات تُوفر أنواع بيانات إضافية للتعامل مع حالات أكثر تعقيدًا:
- DATETIME2 (في SQL Server): يوفر دقة أكبر للوقت (أجزاء من الثانية).
- SMALLDATETIME (في SQL Server): نطاق أصغر من
DATETIME
، يستخدم مساحة تخزين أقل. - TIME WITH TIME ZONE (في PostgreSQL): يتضمن معلومات المنطقة الزمنية.
- TIMESTAMP WITH TIME ZONE (في PostgreSQL و Oracle): يتضمن معلومات المنطقة الزمنية.
- INTERVAL (في PostgreSQL و Oracle): يُستخدم لتخزين فترة زمنية (مثل "3 أيام" أو "5 ساعات").
أمثلة على استخدام أنواع البيانات في SQL:
SQL
-- إنشاء جدول مع أعمدة من أنواع بيانات التاريخ والوقتCREATE TABLE Events ( EventID INT PRIMARY KEY, EventName VARCHAR(255), EventDate DATE, EventTime TIME, EventDateTime DATETIME);
-- إدخال بيانات في الجدولINSERT INTO Events (EventID, EventName, EventDate, EventTime, EventDateTime)VALUES (1, 'Meeting', '2024-11-15', '10:00:00', '2024-11-15 10:00:00');
-- استعلام عن البياناتSELECT * FROM Events;
-- استعلام عن الأحداث التي وقعت في تاريخ معينSELECT * FROM Events WHERE EventDate = '2024-11-15';
-- استعلام عن الأحداث التي وقعت بعد تاريخ معينSELECT * FROM Events WHERE EventDateTime > '2024-11-01 00:00:00';
الدوال الخاصة بالتاريخ والوقت:
توفر SQL العديد من الدوال للتعامل مع قيم التاريخ والوقت، مثل:
NOW()
أوGETDATE()
أوSYSDATE()
: لإرجاع التاريخ والوقت الحاليين (تختلف الصيغة بين أنظمة قواعد البيانات).DATE()
: لاستخراج التاريخ من قيمةDATETIME
.TIME()
: لاستخراج الوقت من قيمةDATETIME
.YEAR()
,MONTH()
,DAY()
: لاستخراج السنة والشهر واليوم من قيمة تاريخ.HOUR()
,MINUTE()
,SECOND()
: لاستخراج الساعة والدقيقة والثانية من قيمة وقت.DATE_ADD()
أوDATEADD()
: لإضافة فترة زمنية إلى تاريخ.DATE_SUB()
أوDATESUB()
: لطرح فترة زمنية من تاريخ.DATEDIFF()
: لحساب الفرق بين تاريخين.
ملاحظات هامة:
- يجب الانتباه إلى تنسيق التاريخ والوقت عند إدخال البيانات، حيث يختلف التنسيق الافتراضي بين أنظمة قواعد البيانات. يُفضل استخدام التنسيق القياسي ISO 8601 (YYYY-MM-DD HH:MM:SS).
- يجب اختيار نوع البيانات المناسب بناءً على الاحتياجات. إذا كنت تحتاج فقط إلى تخزين التاريخ، استخدم
DATE
. إذا كنت تحتاج إلى تخزين التاريخ والوقت، استخدمDATETIME
. - يُمكن استخدام الدوال الخاصة بالتاريخ والوقت لإجراء عمليات حسابية ومقارنات معقدة على قيم التاريخ والوقت.
باختصار، توفر أنواع بيانات التاريخ والوقت في SQL طريقة فعالة لتخزين ومعالجة معلومات التاريخ والوقت في قواعد البيانات. فهم هذه الأنواع والدوال المرتبطة بها ضروري للتعامل مع البيانات الزمنية بشكل صحيح.