यहां ट्रिक यह जानने की है कि कौन सा कॉलम टाइप date_last_active
. है है। मेरे पास TIMESTAMP
. के साथ काफ़ी अनुभव है और DATETIME
यह जानने के लिए कि एक MySQL time_zone सत्र चर का अनुवाद (और सम्मान) करता है, दूसरा नहीं करता है।
mysql> SET SESSION time_zone = 'America/New_York';
Query OK, 0 rows affected (0.00 sec)
mysql> create table timetest ( dt datetime NULL, ts timestamp NOT NULL DEFAULT 0 );
Query OK, 0 rows affected (0.06 sec)
mysql> INSERT INTO timetest ( dt, ts ) VALUES ( UTC_TIMESTAMP(), UTC_TIMESTAMP() );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO timetest ( dt, ts ) VALUES ( NOW(), NOW() );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM timetest;
+---------------------+---------------------+
| dt | ts |
+---------------------+---------------------+
| 2009-06-27 17:53:51 | 2009-06-27 17:53:51 |
| 2009-06-27 13:53:54 | 2009-06-27 13:53:54 |
+---------------------+---------------------+
2 rows in set (0.00 sec)
mysql> set session time_zone='UTC';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM timetest;
+---------------------+---------------------+
| dt | ts |
+---------------------+---------------------+
| 2009-06-27 17:53:51 | 2009-06-27 21:53:51 |
| 2009-06-27 13:53:54 | 2009-06-27 17:53:54 |
+---------------------+---------------------+
2 rows in set (0.00 sec)
तो, यहाँ मैं क्या करता हूँ:
- डेटाबेस में सम्मिलित करते समय, PHP और MySQL में UTC का उपयोग करें।
my.cnf
. में मेरे पास है:time_zone=UTC
MySQL और PHP I में किसी भी समस्या से बचने के लिएdate_default_timezone_set('UTC')
। UTC_TIMESTAMP()
का उपयोग करें इसके बजायNOW()
- एक यूटीसी है, एक स्थानीय (सत्र) समय क्षेत्र का उपयोग करता है। यदि आप ऊपर दिए गए पहले बिंदु का अनुसरण कर रहे हैं, तो UTC_TIMESTAMP() का उपयोग करें।- उपयोगकर्ता को प्रदर्शित करने के लिए चुनते समय,
set time_zone='
लोकल_टाइम_ज़ोन'
कुछ भी प्रदर्शित करने से पहले। - यदि आपको सामान प्रदर्शित करना है, तो अपडेट करें, PHP और MySQL में उचित समय क्षेत्र परिवर्तनों के साथ अपनी कॉल को ब्रैकेट करना सुनिश्चित करें।
उम्मीद है कि यह पता लगाने के लिए पर्याप्त है कि इस तक कैसे पहुंचे। अगर आपके पास और प्रश्न हैं तो मुझे बताएं।