لماذا لا تستخدم الطابع الزمني الخاص بـ MySQL في جميع المجالات؟

StackOverflow https://stackoverflow.com/questions/1003171

  •  05-07-2019
  •  | 
  •  

سؤال

إذا كنت تريد أن يقوم تطبيق الويب الخاص بك بالترجمة بين المناطق الزمنية على أساس كل مستخدم، فلماذا لا تستخدم TIMESTAMP في جميع المجالات لجميع حقول التاريخ/الوقت؟ضع في اعتبارك أن قيم TIMESTAMP يتم تخزينها بالتوقيت العالمي المنسق (UTC) ويتم تحويلها إلى المنطقة الزمنية المحددة للاتصال عند استردادها.

لقد طرحت هذا السؤال على IRC، وقرأت وثائق MySQL، وبحثت في Google بشكل مكثف، وسألت زملائي في العمل، ولم أجد حتى الآن سببًا مقنعًا لعدم استخدام TIMESTAMP.

ملحوظة:أفهم أن TIMESTAMP له نطاق محدود من 1970 إلى 2038؛لن تكون هذه مشكلة في حالتي.كما أنني أستخدم PHP مع MySQL.

هل كانت مفيدة؟

المحلول

وDATETIME هو التواريخ والأوقات التعسفية التي كنت تستخدم في البيانات الخاصة بك.

والطابع الزمني هو عندما تريد الوقت الذي يتم تجديد تلقائيا. إذا كنت تريد أن تعرف عندما تم إدراج صف / تحديثها، واستخدام الطابع الزمني.

وأيضا، أن نضع في اعتبارنا أن الطابع الزمني هو فقط <م> تخزين في UTC - يتم تحويلها إلى التوقيت المحلي لملقم قبل نقلها إلى الوراء كجزء من الاستعلام.

في قضيتك، كنت أفضل حالا باستخدام DATETIME. إذا كنت قلقا حول UTC، فلا بأس - مجرد خلق التواريخ في UTC بدلا من استخدام بالتوقيت المحلي. استخدام UTC_TIMESTAMP .

نصائح أخرى

أعتقد أن إجابتك هنا:

أفهم أن TIMESTAMP له نطاق محدود من 1970 إلى 2038؛ لن تكون هذه مشكلة في حالتي.

سأكون حذرًا في وضع افتراضات حول طول عمر المشاريع خاصة عندما يتعلق الأمر بمخططات قاعدة البيانات.تميل قواعد البيانات إلى البقاء في مكانها واستخدامها لفترة طويلة بعد اختفاء التطبيقات التي استخدمتها.

والجواب Randalpho هي خاطئة على الكثير من الحقائق!

والطوابع لا تحتاج إلى تحديث تلقائيا على إنشاء أو التحديثات.

وبالإضافة إلى ذلك، يتم تحويل الطوابع الزمنية إلى التوقيت المحلي العميل، وليس serever ل.

ومجرد إلقاء نظرة على مستندات الخلية عن التاريخ والوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top