شبكة تعلم مع ناو

لماذا يناسب DATETIME موعدًا في عام 2040 أكثر من TIMESTAMP؟

لا يقتصر الفرق بين DATETIME وTIMESTAMP على التعامل مع المنطقة الزمنية، بل يشمل المجال الزمني أيضًا. في MySQL 8، يمتد مجال DATETIME إلى سنوات بعيدة تصل إلى 9999، بينما ينتهي مجال TIMESTAMP في يناير من عام 2038. لذلك لا يستطيع النوع الثاني تمثيل موعد في عام 2040.

عند تصميم جدول لأحداث مستقبلية، يجب فحص أبعد موعد متوقع بدل الاعتماد على نجاح تخزين تاريخ اليوم. إذا كانت المواعيد محلية وتحتاج إلى تواريخ بعد عام 2038، فإن DATETIME يتجنب قيد المجال هذا. لكنه لا يحفظ اسم المنطقة الزمنية داخل القيمة، ولذلك تبقى دلالة الموعد مسؤولية واضحة في التصميم. كما أن استخدام DATE وحده يفقد الوقت، واستخدام TIME وحده يفقد التاريخ، فلا يحقق أي منهما مطلب حفظ الموعد كاملًا في عمود واحد.

مثال

CREATE TABLE events (
  starts_at DATETIME
);
INSERT INTO events VALUES ('2040-06-01 09:30:00');

باختصار: لحفظ تاريخ ووقت في عام 2040 داخل MySQL 8، يوفر DATETIME المجال المطلوب.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.