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
आपको मिलने वाला परिणाम डेटा प्रकार पर निर्भर करेगा।
निम्न तालिका उस परिणाम को रेखांकित करती है जो प्रत्येक प्रकार उत्पन्न करता है।
अभिव्यक्ति | रिटर्न प्रकार | <थ>विवरण|
---|---|---|
समय क्षेत्र पर समय क्षेत्र के साथ टाइमस्टैम्प | timestamp without time zone | दिए गए समय टिकट को समय क्षेत्र के साथ में बदलें नए समय क्षेत्र में, बिना किसी समय क्षेत्र के पदनाम के |
समय क्षेत्र पर समय क्षेत्र के बिना टाइमस्टैम्प | timestamp with time 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
तो इस उदाहरण में स्थानीय समय क्षेत्र को समय क्षेत्र में परिवर्तित करने के लिए माना गया था।