في لغة 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 طريقة فعالة لتخزين ومعالجة معلومات التاريخ والوقت في قواعد البيانات. فهم هذه الأنواع والدوال المرتبطة بها ضروري للتعامل مع البيانات الزمنية بشكل صحيح.