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

PostgreSQL टाइमस्टैम्प्टज़ प्रकार में समय क्षेत्र को सुरक्षित रखें

जैसा कि आपने पहले ही स्वयं को समझ लिया है, समय क्षेत्र पोस्टग्रेज़ दिनांक / समय प्रकारों के साथ बिल्कुल भी सहेजा नहीं गया है, यहां तक ​​कि timestamptz . के साथ भी नहीं . इसकी भूमिका क्रमशः एक इनपुट संशोधक या एक आउटपुट डेकोरेटर है। केवल मान (समय में बिंदु) सहेजा जाता है। इस संबंधित उत्तर में पर्याप्त विवरण:

  • रेल और पोस्टग्रेएसक्यूएल में टाइमज़ोन को पूरी तरह से नज़रअंदाज़ करना

इसलिए, यदि आप इनपुट स्ट्रिंग के उस हिस्से को संरक्षित करना चाहते हैं, तो आपको इसे स्ट्रिंग से निकालना होगा और इसे स्वयं सहेजना होगा। मैं इस तरह की एक तालिका का उपयोग करूंगा:

CREATE TABLE tstz
 ...
 , ts timestamp    -- without time zone
 , tz text
)

tz , होने के नाते text , एक अंकीय ऑफ़सेट धारण कर सकता है साथ ही एक समय क्षेत्र संक्षिप्त नाम , या एक समय क्षेत्र नाम

कठिनाई यह है कि पार्सर द्वारा अनुसरण किए जाने वाले सभी विभिन्न नियमों के अनुसार समय क्षेत्र का हिस्सा निकाला जाए और इस तरह से आसानी से नहीं टूटेगा। अपनी खुद की प्रक्रिया तैयार करने के बजाय, पार्सर से काम करवाएं . इस डेमो पर विचार करें:

WITH ts_literals (tstz) AS (
   VALUES ('2013-11-28 23:09:11.761166+03'::text)
         ,('2013-11-28 23:09:11.761166 CET')
         ,('2013-11-28 23:09:11.761166 America/New_York')
   )
SELECT tstz
      ,tstz::timestamp AS ts
      ,right(tstz, -1 * length(tstz::timestamp::text)) AS tz
FROM   ts_literals;

एसक्यूएल फिडल.

T . के साथ या बिना काम करता है दिनांक और समय के बीच। मुख्य तर्क यहाँ है:

right(tstz, -1 * length(tstz::timestamp::text)) AS tz

दिनांक/समय घटक के रूप में पहचाने जाने वाले पार्सर की लंबाई को ट्रिम करने के बाद टाइमस्टैम्प स्ट्रिंग के बचे हुए हिस्से को लें। यह इनपुट पर निर्भर करता है, जैसा कि आपने बताया:

<ब्लॉकक्वॉट>

मान्य ISO8601 स्ट्रिंग्स



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Linux पर PostgreSQL में कॉन्फ़िगरेशन पैरामीटर work_mem

  2. PostgreSQL में अग्रणी शून्य जोड़ने के 2 तरीके

  3. ST_HexagonGrid geom वेक्टर सभी बिंदुओं को खोजने के लिए

  4. पोस्टग्रेस्क्ल में फ़ंक्शन, प्रक्रिया, ट्रिगर स्रोत कोड कैसे प्रदर्शित करें?

  5. अभिव्यक्ति सूचकांकों की उपयोगिता पर