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

هل يتغير عرض TIMESTAMP عند تغيير المنطقة الزمنية للجلسة؟

يتعامل MySQL مع TIMESTAMP وفق المنطقة الزمنية للجلسة عند الإدخال والاسترجاع. عند إدخال قيمة محلية، يحولها إلى تمثيل مرتبط بالتوقيت العالمي، ثم يعرضها وفق منطقة الجلسة التي تقرأها. أما DATETIME فلا يخضع لهذا التحويل التلقائي المرتبط بمنطقة الجلسة، وتبقى مكوناته المدخلة كما هي.

لذلك يمكن أن تعرض جلستان مختلفتان ساعتين مختلفتين لقيمة TIMESTAMP نفسها، دون أن يعني ذلك تغير اللحظة المخزنة. هذا الفرق مهم عند تشخيص اختلاف الوقت بين التطبيق وأداة إدارة قاعدة البيانات. لجعل تجربة المقارنة قابلة لإعادة التنفيذ، حدد منطقة الجلسة قبل الإدخال وقبل القراءة. استخدام إزاحات رقمية في المثال يتجنب الحاجة إلى أسماء مناطق قد تتطلب تحميل جداول المناطق الزمنية. كذلك من الجيد إعادة إعداد الجلسة السابق بعد انتهاء التجربة حتى لا يؤثر الاختبار في الأوامر التالية.

مثال

SET @saved_tz = @@session.time_zone;
SET time_zone = '+00:00';
CREATE TABLE events (
  ts TIMESTAMP,
  dt DATETIME
);
INSERT INTO events VALUES
('2026-01-15 12:00:00', '2026-01-15 12:00:00');
SET time_zone = '+03:00';
SELECT ts, dt FROM events;
SET time_zone = @saved_tz;

باختصار: يتغير عرض TIMESTAMP بحسب منطقة الجلسة، بينما لا يتغير DATETIME بالطريقة نفسها.

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

اختبر نفسك

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