उचित तरीका समय क्षेत्र के साथ समय
का उपयोग नहीं करना है (समय
. के बीच की जगह पर ध्यान दें और क्षेत्र
) बिल्कुल, क्योंकि यह डिज़ाइन द्वारा तोड़ा गया है। यह SQL मानक में है, इसलिए Postgres प्रकार का समर्थन करता है - लेकिन सलाह देता है नहीं इसके प्रयेाग के लिए। इस संबंधित उत्तर में और अधिक:
चूँकि आपको DST
से समस्या हो रही है , timetz
(संक्षिप्त नाम) एक विशेष रूप से खराब विकल्प है। यह डीएसटी से निपटने के लिए अपर्याप्त है। यह बताना असंभव है कि 8:00:00
सर्दी या गर्मी के समय में है।
समय क्षेत्र के साथ टाइमस्टैम्प
का उपयोग करें (टिमस्टाम्प्ट्ज़
)
बजाय। आप हमेशा दिनांक भाग को त्याग सकते हैं। बस start_time::time
. का उपयोग करें स्थानीय . प्राप्त करने के लिए timestamptz
. से समय . या AT TIME ZONE
अपने समय क्षेत्र में स्थानांतरित करने के लिए।
आम तौर पर, डीएसटी को अपने आप ध्यान में रखना , समय क्षेत्र नाम . का उपयोग करें एक समय क्षेत्र संक्षेप के बजाय। इस संबंधित प्रश्न और उत्तर में अधिक स्पष्टीकरण:
आपके विशेष मामले में, आप शायद अमेरिका/लॉस_एंजेल्स
. का उपयोग कर सकते हैं (उदाहरण के साथ timestamptz
):
INSERT INTO mytable(start_time, end_time)
VALUES
('1970-01-01 08:00:00 America/Los_Angeles'
, '1970-01-01 18:00:00 America/Los_Angeles')
मैंने इसे जाँच कर पाया:
SELECT * FROM pg_timezone_names
WHERE utc_offset = '-07:00'
AND is_dst;
समय क्षेत्र प्रबंधन के बारे में मूल बातें: