सबसे पहले, मैंने इसके बारे में पहले भी विस्तार से लिखा है, इसलिए कृपया मेरे उत्तर यहां पढ़ें। और यहां , साथ ही यह ब्लॉग पोस्ट लाउ टार्नस्कोव द्वारा ।
MySQL के विशिष्ट संबंध में, आप आमतौर पर TIMESTAMP
. का उपयोग नहीं करना चाहते हैं भविष्य की घटना के स्थानीय समय के लिए क्षेत्र, क्योंकि यह सत्र के समय क्षेत्र से यूटीसी में लिखने के समय में परिवर्तित हो जाएगा, और यूटीसी से सत्र के समय क्षेत्र में पढ़ने के समय में परिवर्तित हो जाएगा। भले ही ये एक ही समय क्षेत्र आईडी हों (जो उनका होना जरूरी नहीं है), इस बात की कोई गारंटी नहीं है कि जब आप डेटा लिखते हैं और जब घटना के बीच एक या दोनों समय क्षेत्रों के लिए समय क्षेत्र डेटा नहीं बदलेगा होता है।
इसके बजाय, DATETIME
. का उपयोग करें फ़ील्ड, जिसमें कोई अंतर्निहित समय क्षेत्र रूपांतरण नहीं है। आपने जो लिखा है उसका सटीक मूल्य आपको मिलता है। घटना का स्थानीय समय संगृहीत करें, और एक VARCHAR
संगृहीत करें घटना के लिए समय क्षेत्र पहचानकर्ता युक्त क्षेत्र। उपयोगकर्ता के मूल इरादे को बनाए रखने का यही एकमात्र तरीका है।
मेरे द्वारा पहले दिए गए उत्तरों में तर्क और किनारे के मामलों का वर्णन किया गया है।