PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

टाइमस्टैम्प पर लागू होने पर समान गुणों वाले समय क्षेत्र के नाम अलग परिणाम देते हैं

इसे पोस्ट करने के ठीक बाद, मैंने संदेह की जांच के लिए एक और प्रश्न चलाया:

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 ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL का उपयोग करके वर्तमान डेटाबेस में तालिकाओं को कैसे सूचीबद्ध करें

  2. पोस्टग्रेएसक्यूएल के लिए पीजीपूल के लिए एक गाइड:भाग दो

  3. रेल:पीजी रत्न स्थापित करने में त्रुटि

  4. PGTune विकल्प - ClusterControl PostgreSQL कॉन्फ़िगरेशन

  5. PostgreSQL के लिए ऑडिट लॉगिंग