नहीं, MySQL इंस्टेंस के भीतर एकल डेटाबेस के लिए समय क्षेत्र को बदलना संभव नहीं है।
हम सर्वर और क्लाइंट को पुनः प्राप्त कर सकते हैं time_zone
एक क्वेरी के साथ सेटिंग्स, इस तरह:
SELECT @@global.time_zone, @@session.time_zone;
हम एक सत्र के लिए क्लाइंट टाइमज़ोन भी बदल सकते हैं, या संपूर्ण MySQL इंस्टेंस के लिए टाइमज़ोन बदल सकते हैं।
लेकिन हमें इस बदलाव के मौजूदा क्लाइंट कनेक्शन पर पड़ने वाले प्रभाव और DATETIME
के तरीके के बारे में पूरी जानकारी होनी चाहिए। और TIMESTAMP
उदाहरण में पहले से संग्रहीत मानों की व्याख्या की जाएगी।
सर्वर टाइम_ज़ोन को MySQL इंस्टेंस स्टार्टअप पर सेट करने के लिए, हम /etc/my.cnf
को संशोधित कर सकते हैं। [mysqld]
. के तहत फ़ाइल (या जहां भी mysql इंस्टेंस इनिशियलाइज़ेशन पैरामीटर से पढ़ा जाता है) अनुभाग:
[mysqld]
default-time-zone='+00:00'
-- या --
--default_time_zone='+00:00'
जोड़ना भी संभव है (कम वांछनीय) mysqld_safe का विकल्प
नोट: MySQL सर्वर पर टाइमज़ोन सेटिंग बदलने से मौजूदा DATETIME या TIMESTAMP कॉलम में संग्रहीत मान नहीं बदलते हैं, लेकिन चूंकि यह उस संदर्भ को प्रभावी ढंग से बदल देता है जिसमें उन संग्रहीत मानों की व्याख्या की जाती है, ऐसा लगेगा कि सभी मान स्थानांतरित हो गए हैं। (जहां 08:00 का मतलब सुबह 8 बजे सीएसटी था, सर्वर के समय क्षेत्र को सीएसटी से जीएमटी में बदलने के साथ, वही '08:00’ को अब सुबह 8 बजे जीएमटी लिया जाएगा, जो प्रभावी रूप से 2 बजे सीएसटी होगा।
यह भी ध्यान रखें कि TIMESTAMP कॉलम हमेशा UTC में स्टोर होते हैं, जबकि DATETIME कॉलम में टाइमज़ोन नहीं होता है।http://dev.mysql.com/doc/refman/5.5/en/datetime.html
प्रत्येक ग्राहक सत्र अपने स्वयं के सत्र के लिए समय क्षेत्र सेटिंग बदल सकता है:
SET time_zone='-06:00';
लेकिन इनमें से कोई भी वास्तव में टाइमज़ोन रूपांतरण समस्या को "हल" नहीं करता है, यह केवल रूपांतरण समस्या को इधर-उधर करता है।
टाइमज़ोन रूपांतरणों को संभालने वाली एप्लिकेशन परत के साथ स्वाभाविक रूप से "खराब" कुछ भी नहीं है; कभी-कभी, यह संभालने के लिए सबसे अच्छी जगह है। इसे सही ढंग से और लगातार करना है।
(आपके द्वारा वर्णित सेटअप के बारे में अजीब बात यह है कि ऐप DATETIME मानों को संग्रहीत कर रहा है जैसे कि MySQL सर्वर टाइम_ज़ोन जीएमटी पर सेट है, लेकिन MySQL सर्वर टाइम_ज़ोन कुछ और पर सेट है।)