मेरे शेष उत्तर से पहले, मैं अभी अनुशंसा करना चाहता हूं कि यदि आपके पास यूटीसी का उपयोग करने के लिए अपने आवेदन को बदलने का कोई विकल्प है तो यह आपको अभी और भविष्य में बहुत दुख से बचाएगा।
हालाँकि आपके प्रश्न के संदर्भ को देखते हुए, मैं मान रहा हूँ कि यह एक विकल्प नहीं है और आप एक पारंपरिक सर्वर वातावरण में MySQL का उपयोग करने के लिए डिज़ाइन की गई प्रणाली को अपना रहे हैं जहाँ आप केवल समय क्षेत्र बदल सकते हैं, और यह कि कोड तर्क है इस समय क्षेत्र की अपेक्षा करता है और यूटीसी का उपयोग करने के लिए आसानी से अनुकूलित नहीं किया जा सकता है।
लेकिन अगर आपको वास्तव में इसे पीएसटी के रूप में स्टोर करने की आवश्यकता है, तो पढ़ें।
आप सही हैं कि mySql डिफ़ॉल्ट रूप से टाइमस्टैम्प स्टोरेज के लिए सर्वर के टाइमज़ोन का उपयोग करेगा, हालांकि आपकी धारणा है कि RDS इंस्टेंस के टाइमज़ोन AWS क्षेत्र के आधार पर सेट होते हैं जिसमें उन्हें लॉन्च किया जाता है, गलत है - सभी आरडीएस इंस्टेंस को यूटीसी के रूप में उनके टाइमज़ोन सेट के साथ लॉन्च किया जाता है, और यह कॉन्फ़िगरेशन कर सकता है बदला नहीं जा सकता:
तो आपका एकमात्र विकल्प पीएसटी के लिए डेटाबेस इंस्टेंस में आपके एप्लिकेशन द्वारा किए गए प्रत्येक कनेक्शन पर टाइमज़ोन सेट करना है। आप SET SESSION time_zone = 'PST'
. का उपयोग कर सकते हैं प्रत्येक कनेक्शन में निष्पादित करने के लिए क्वेरी जो एक एप्लिकेशन दो चरणों का पालन करके करता है यहां पाया गया
:
-
निम्न संग्रहीत कार्यविधि बनाएं (UTC-8 PST है):
-
अपने इंस्टेंस से कनेक्ट करें, और निम्न कमांड चलाएँ:
-
आपको
EXECUTE
grant प्रदान करने की आवश्यकता हो सकती है डेटाबेस से कनेक्ट होने वाले उपयोगकर्ताओं के लिए अनुमतियाँ, अन्यथा आपको एक कनेक्शन त्रुटि मिल सकती है:
अब किसी भी क्लाइंट द्वारा आपके आरडीएस इंस्टेंस के खिलाफ निष्पादित प्रत्येक क्वेरी को किसी भी एप्लिकेशन लॉजिक को संशोधित किए बिना और डेटाबेस में पहले से संग्रहीत टाइमस्टैम्प को अपडेट करने की आवश्यकता के बिना पीएसटी का उपयोग करना चाहिए।