मुझे कुछ टाइमस्टैम्प फ़ील्ड को हमारे MySQL (InnoDB) डीबी में INT में कनवर्ट करने की आवश्यकता है। मुझे एहसास है कि TIMESTAMP को INT में परिवर्तित करना असामान्य है, लेकिन हमें अभी भी इसे करने की आवश्यकता है :)माइस्क्ल टाइमस्टैम्प को INTEGER में परिवर्तित कर रहा है - टाइमज़ोन
ऐसा लगता है कि ऐसा करने के लिए पर्याप्त आगे है, लेकिन कुछ टाइमज़ोन और डेलाइट सेविंग त्रुटियां हैं।
मेरे पास एक स्क्रिप्ट है जो प्रति कॉलम मेरे SQL कोड उत्पन्न करती है। उदाहरण के लिए, यह उत्पन्न करता है:
ALTER TABLE alarmLog ADD COLUMN started_tmp INT UNSIGNED;
UPDATE alarmLog SET started_tmp = UNIX_TIMESTAMP(started);
ALTER TABLE alarmLog DROP started;
alter TABLE alarmLog CHANGE started_tmp started INT UNSIGNED NULL DEFAULT 0;
अगर मैं पहले और select FROM_UNIXTIME(1291788036);
का उपयोग कर, परिणाम अच्छा लग रहा है डेटा के बाद की तुलना करें।
विचार तब सभी क्लाइंट-साइड सॉफ़्टवेयर को यूटीसी में परिवर्तित करने के लिए बदलना है और इसे संग्रहीत करते समय INT का उपयोग करना है। पुनर्प्राप्त करते समय, INT को वर्तमान समय क्षेत्र में परिवर्तित कर दिया जाता है।
लेकिन तब डॉक्स warn me इस परिदृश्य के बारे में (सीईटी में डेलाइट सेविंग):
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 02:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 03:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
कैसे एपीआई और ओएस सामान्य रूप से डेलाइट सेविंग के साथ सौदा करते हैं? मुझे पता है कि मेरे पीसी की यूटीसी में घड़ी है और गर्मी के समय में, ओएस इसमें दो घंटे जोड़ता है, और सर्दियों के समय में एक। मुझे लगता है कि यह निर्धारित करने के लिए यूटीसी समय का उपयोग करता है कि यह डीएसटी है या नहीं।
तो, मैं इससे कैसे निपटूं? डीएसटी ऑफसेट निर्दिष्ट करने के लिए डेटाबेस में फ़ील्ड जोड़ने का एकमात्र समाधान है?
ग्रीष्मकालीन समय एक अलग समय क्षेत्र है। जैसे सीईटी केंद्रीय यूरोपीय समय है, सीईएसटी मध्य यूरोपीय ग्रीष्मकालीन समय है। आपका ओएस कब स्विच करना जानता है। जब तक आप टाइमस्टैम्प के लिए यूटीसी का उपयोग करते हैं, तब तक यह स्थानीय समय में कनवर्ट करने के लिए प्रस्तुति परत पर निर्भर करता है। –