इसे पोस्ट करने के ठीक बाद, मैंने संदेह की जांच के लिए एक और प्रश्न चलाया:
SELECT * FROM pg_timezone_abbrevs
WHERE abbrev IN ('CEST', 'CET');
abbrev | utc_offset | is_dst
--------+------------+--------
CEST | 02:00:00 | t
CET | 01:00:00 | f
जैसा कि यह निकला, वहाँ भी . है एक समय क्षेत्र संक्षिप्त नाम नाम CET
(जो समझ में आता है, "सीईटी" संक्षेप में है)। और ऐसा लगता है कि PostgreSQL पूरे नाम पर संक्षिप्त नाम चुनता है। इसलिए, भले ही मुझे CET
मिल गया हो समय क्षेत्र में नाम , व्यंजक '2012-01-18 1:0 CET'::timestamptz की व्याख्या समय क्षेत्र संक्षिप्त रूप के लिए सूक्ष्म रूप से भिन्न नियमों के अनुसार की गई है ।
SELECT '2012-01-18 1:0 CEST'::timestamptz(0)
,'2012-01-18 1:0 CET'::timestamptz(0)
,'2012-01-18 1:0 Europe/Vienna'::timestamptz(0);
timestamptz | timestamptz | timestamptz
------------------------+------------------------+------------------------
2012-01-18 00:00:00+01 | 2012-01-18 01:00:00+01 | 2012-01-18 01:00:00+01
SELECT '2012-08-18 1:0 CEST'::timestamptz(0)
,'2012-08-18 1:0 CET'::timestamptz(0)
,'2012-08-18 1:0 Europe/Vienna'::timestamptz(0);
timestamptz | timestamptz | timestamptz
------------------------+------------------------+------------------------
2012-08-18 01:00:00+02 | 2012-08-18 02:00:00+02 | 2012-08-18 01:00:00+02
मुझे समय क्षेत्र के 10 मामले मिलते हैं संक्षिप्त रूप समय क्षेत्र में नाम और यह समझने में असफल होते हैं कि वे वहां क्यों हैं। उद्देश्य क्या है?
उनमें से, टाइम ऑफ़सेट (utc_offset
.) ) डीएसटी सेटिंग के कारण चार मामलों में असहमत:
SELECT n.*, a.*
FROM pg_timezone_names n
JOIN pg_timezone_abbrevs a ON a.abbrev = n.name
WHERE n.utc_offset <> a.utc_offset;
name | abbrev | utc_offset | is_dst | abbrev | utc_offset | is_dst
------+--------+------------+--------+--------+------------+--------
CET | CEST | 02:00:00 | t | CET | 01:00:00 | f
EET | EEST | 03:00:00 | t | EET | 02:00:00 | f
MET | MEST | 02:00:00 | t | MET | 01:00:00 | f
WET | WEST | 01:00:00 | t | WET | 00:00:00 | f
इन मामलों में, लोगों को बेवकूफ बनाया जा सकता है (जैसे मैं था), tz नाम . को देखकर और एक समय ऑफसेट ढूंढना जो वास्तव में लागू नहीं होता है। यह एक दुर्भाग्यपूर्ण डिज़ाइन है - यदि बग नहीं है, तो कम से कम दस्तावेज़ीकरण बग ।
समय क्षेत्र नाम . के बीच अस्पष्टता के बारे में मैं मैनुअल में कुछ भी खोजने में विफल रहा और संक्षिप्त रूप सुलझाए जाते हैं। स्पष्ट रूप से संक्षिप्ताक्षरों को प्राथमिकता दी जाती है।
परिशिष्ट बी.1। दिनांक/समय इनपुट व्याख्या में समय क्षेत्र के संक्षिप्त रूपों की तलाश का उल्लेख है, लेकिन यह अस्पष्ट रहता है कैसे समय क्षेत्र नाम की पहचान की गई है और अस्पष्ट टोकन के मामले में उनमें से किसकी प्राथमिकता है।
<ब्लॉककोट>यदि टोकन एक टेक्स्ट स्ट्रिंग है, तो संभावित स्ट्रिंग्स से मिलान करें:
समय क्षेत्र के संक्षिप्त नाम के रूप में टोकन के लिए बाइनरी-सर्च टेबल लुकअप करें।
खैर, इस वाक्य में थोड़ा सा संकेत है कि संक्षेप पहले आते हैं, लेकिन कुछ भी निश्चित नहीं है। इसके अलावा, एक कॉलम है abbrev
दोनों तालिकाओं में, pg_timezone_names
और pg_timezone_abbrevs
...