दुर्भाग्य से PostgreSQL एक समय क्षेत्र डेटा प्रकार की पेशकश नहीं करता है, इसलिए आपको संभवतः text
. का उपयोग करना चाहिए ।
interval
पहली नज़र में एक तार्किक विकल्प की तरह लगता है, और यह है कुछ उपयोगों के लिए उपयुक्त। हालांकि, यह डेलाइट सेविंग टाइम पर विचार करने में विफल रहता है, न ही यह इस तथ्य पर विचार करता है कि एक ही यूटीसी ऑफ़सेट के विभिन्न क्षेत्रों में अलग-अलग डीएसटी नियम हैं।
यूटीसी ऑफ़सेट से समय क्षेत्र में 1:1 मैपिंग नहीं है।
उदाहरण के लिए, Australia/Sydney
. के लिए समय क्षेत्र (न्यू साउथ वेल्स) UTC+10
है (EST
), या UTC+11
(EDT
) डेलाइट सेविंग टाइम के दौरान। हाँ, यह वही संक्षिप्त नाम है EST
संयुक्त राज्य अमेरिका का उपयोग करता है; tzdata डेटाबेस में समय क्षेत्र के संक्षिप्तीकरण गैर-अद्वितीय हैं, यही वजह है कि Pg में timezone_abbreviations
है स्थापना। इससे भी बदतर, ब्रिस्बेन (क्वींसलैंड) लगभग एक ही देशांतर पर है और UTC+10 EST
में है ... लेकिन दिन के उजाले की बचत नहीं है, इसलिए कभी-कभी यह -1
. पर होता है NSW के DST के दौरान न्यू साउथ वेल्स में ऑफसेट।
(अपडेट करें :हाल ही में ऑस्ट्रेलिया ने एक A
. अपनाया है उपसर्ग, इसलिए यह AEST
. का उपयोग करता है जैसा कि इसके पूर्वी राज्यों में TZ का संक्षिप्त नाम है, लेकिन EST
और WST
आम उपयोग में रहें)।
बहुत भ्रमित?
अगर आपको केवल एक UTC ऑफ़सेट store स्टोर करना है फिर एक interval
उचित है। अगर आप एक समय क्षेत्र स्टोर करना चाहते हैं , इसे text
. के रूप में संग्रहित करें . इस समय एक समय क्षेत्र ऑफ़सेट को सत्यापित करने और परिवर्तित करने में दर्द होता है, लेकिन कम से कम यह डीएसटी से मुकाबला करता है।