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

PostgreSQL में AT TIME ZONE कैसे काम करता है

PostgreSQL में, आप AT TIME ZONE . का उपयोग कर सकते हैं टाइमस्टैम्प को दूसरे टाइमज़ोन में बदलने के लिए क्लॉज।

सिंटैक्स

आप इसे निम्नलिखित तीन प्रकारों में से किसी के साथ उपयोग कर सकते हैं:

timestamp with time zone AT TIME ZONE zone
timestamp without time zone AT TIME ZONE zone
time with time zone AT TIME ZONE zone

जहां zone वह समय क्षेत्र है जिसमें आप बाईं ओर के मान को परिवर्तित करना चाहते हैं।

स्पष्ट होने के लिए, तीन प्रकारों के बीच एकमात्र अंतर परिवर्तित किए जाने वाले टाइमस्टैम्प के डेटा प्रकार में है।

तीन डेटा प्रकार हैं:

  • timestamp with time zone
  • timestamp without time zone
  • time with time zone

आपको मिलने वाला परिणाम डेटा प्रकार पर निर्भर करेगा।

निम्न तालिका उस परिणाम को रेखांकित करती है जो प्रत्येक प्रकार उत्पन्न करता है।

<थ>विवरण
अभिव्यक्ति रिटर्न प्रकार
समय क्षेत्र पर समय क्षेत्र के साथ टाइमस्टैम्प zone timestamp without time zone दिए गए समय टिकट को समय क्षेत्र के साथ में बदलें नए समय क्षेत्र में, बिना किसी समय क्षेत्र के पदनाम के
समय क्षेत्र पर समय क्षेत्र के बिना टाइमस्टैम्प zone timestamp with time zone दिए गए टाइम स्टैम्प के साथ व्यवहार करें बिना समय क्षेत्र के जैसा कि निर्दिष्ट समय क्षेत्र में स्थित है
समय क्षेत्र के साथ समय क्षेत्र में समय क्षेत्र zone time with time zone दिए गए समय को समय क्षेत्र के साथ में बदलें नए समय क्षेत्र के लिए

वेरिएंट 1

यहां बताया गया है कि जब आप किसी timestamp with time zone को रूपांतरित करते हैं तो क्या होता है मूल्य।

SELECT timestamp with time zone '2025-11-20 00:00:00+00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

2025-11-20 02:00:00

जब मूल टाइमस्टैम्प timestamp with time zone . हो मान, इसे निर्दिष्ट समय क्षेत्र में स्थानांतरित कर दिया जाता है, और परिणाम बिना समयक्षेत्र ऑफसेट के लौटा दिया जाता है।

अगर मैं इनपुट मान के टाइमज़ोन ऑफ़सेट को बदलता हूं, तो यहां बताया गया है।

SELECT timestamp with time zone '2025-11-20 00:00:00+01' AT TIME ZONE 'Africa/Cairo';

परिणाम:

2025-11-20 01:00:00

परिणामी टाइमस्टैम्प को इनपुट टाइमज़ोन के अनुसार स्थानांतरित कर दिया जाता है।

और यदि आप timestamp with time zone निर्दिष्ट करते हैं , लेकिन मूल टाइमस्टैम्प में वास्तव में एक समय क्षेत्र शामिल नहीं होता है, तो स्थानीय समय क्षेत्र मान लिया जाता है।

SELECT timestamp with time zone '2025-11-20 00:00:00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

2025-11-19 16:00:00

इस मामले में, परिणामी टाइमस्टैम्प को आठ घंटे पीछे रख दिया गया है। इसका मतलब है कि मेरा स्थानीय समय क्षेत्र अफ्रीका/काहिरा से आठ घंटे आगे है।

हम उस समयक्षेत्र ऑफ़सेट को देख सकते हैं जिसका उपयोग सीधे इनपुट मान का चयन करके किया गया था।

SELECT timestamp with time zone '2025-11-20 00:00:00';

परिणाम:

2025-11-20 00:00:00+10

वेरिएंट 2

यहां बताया गया है कि जब मूल टाइमस्टैम्प timestamp without time zone का उपयोग करता है तो क्या होता है मूल्य।

दूसरे शब्दों में, यह नहीं है एक समय क्षेत्र शामिल करें।

SELECT timestamp without time zone '2025-11-20 00:00:00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

2025-11-20 08:00:00+10

जब मूल टाइमस्टैम्प में टाइमज़ोन शामिल नहीं होता है, तो परिणाम वर्तमान TimeZone का उपयोग करके प्रदर्शित किया जाता है। सेटिंग और टाइमज़ोन ऑफ़सेट संलग्न है।

यह किसी भी समय लागू होता है जब आप timestamp without time zone निर्दिष्ट करते हैं , भले ही टाइमस्टैम्प में वास्तव में टाइमज़ोन ऑफ़सेट हो।

SELECT timestamp without time zone '2025-11-20 00:00:00+12' AT TIME ZONE 'Africa/Cairo';

परिणाम:

2025-11-20 08:00:00+10

यह उम्मीद की जानी चाहिए, क्योंकि अगर मैं केवल timestamp without time zone का चयन करता हूं मान, मुझे यही मिलता है:

SELECT timestamp without time zone '2025-11-20 00:00:00+12';

परिणाम:

2025-11-20 00:00:00

वेरिएंट 3

यहां बताया गया है कि जब मूल टाइमस्टैम्प time with time zone का उपयोग करता है तो क्या होता है मूल्य।

SELECT time with time zone '00:00:00+00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

02:00:00+02

यह दिए गए time with time zone . को रूपांतरित करता है नए समय क्षेत्र के लिए मान, और परिणाम में समय क्षेत्र ऑफ़सेट जोड़ देता है।

अगर मैं इनपुट मान के टाइमज़ोन ऑफ़सेट को बदलता हूं, तो यहां बताया गया है।

SELECT time with time zone '00:00:00+01' AT TIME ZONE 'Africa/Cairo';

परिणाम:

01:00:00+02

परिणामी टाइमस्टैम्प को इनपुट टाइमज़ोन के अनुसार स्थानांतरित कर दिया जाता है।

और अगर आप time with time zone specify निर्दिष्ट करते हैं , लेकिन मूल टाइमस्टैम्प में वास्तव में समय क्षेत्र शामिल नहीं होता है, स्थानीय समय क्षेत्र माना जाता है।

SELECT time with time zone '00:00:00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

16:00:00+02

इस मामले में, परिणामी टाइमस्टैम्प को आठ घंटे पीछे कर दिया गया है (क्योंकि मेरा स्थानीय समय क्षेत्र अफ्रीका/काहिरा से आठ घंटे आगे है)।

हम उस समयक्षेत्र ऑफ़सेट को देख सकते हैं जिसका उपयोग सीधे इनपुट मान का चयन करके किया गया था।

SELECT time with time zone '00:00:00';

परिणाम:

00:00:00+10

समय क्षेत्र के बिना समय

हालांकि पोस्टग्रेज दस्तावेज में time without time zone . शामिल नहीं है वैरिएंट, वैसे भी यहाँ एक उदाहरण है।

SELECT time without time zone '00:00:00' AT TIME ZONE 'Africa/Cairo';

परिणाम:

16:00:00+02

तो इस उदाहरण में स्थानीय समय क्षेत्र को समय क्षेत्र में परिवर्तित करने के लिए माना गया था।


  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. PostgreSQL के लिए एक प्रदर्शन धोखा पत्र

  3. रेल में Postgresql पर तैयार वक्तव्य

  4. कैसे पोस्टग्रेस्क्ल कॉपी टू एसटीडीआईएन सीएसवी के साथ संघर्ष पर अद्यतन करते हैं?

  5. मेरी पसंदीदा पोस्टग्रेएसक्यूएल क्वेरीज़ और वे क्यों मायने रखती हैं