Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP और MySQL के साथ टाइमज़ोन समस्याएँ होना

यहां ट्रिक यह जानने की है कि कौन सा कॉलम टाइप 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 में उचित समय क्षेत्र परिवर्तनों के साथ अपनी कॉल को ब्रैकेट करना सुनिश्चित करें।

उम्मीद है कि यह पता लगाने के लिए पर्याप्त है कि इस तक कैसे पहुंचे। अगर आपके पास और प्रश्न हैं तो मुझे बताएं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस से पूर्ण कैलेंडर जावास्क्रिप्ट में घटनाओं को पॉप्युलेट करना

  2. GROUP_BYs के दो बाएं जॉइन में से GROUP_CONCAT से अजीब डुप्लिकेट व्यवहार

  3. एक दूसरे के भीतर सबक्वेरी को नेस्ट करके MySQL में 61 टेबल जॉइन लिमिट के आसपास काम करें

  4. SQL डिवीजन mysql में 'मौजूद नहीं' का उपयोग कर रहा है

  5. संबंधित टैग खोजों के लिए MYSQL डेटाबेस सेट करने का सही तरीका?