यह मैनुअल , लेकिन यह हमेशा स्पष्ट नहीं होता है कि वास्तव में दिनांक/समय के साथ कैसे काम किया जाए। SQL युक्ति थोड़ी विचित्र है।
आपके प्रश्न के मामले में यह स्पष्ट नहीं है कि आप समय को यूटीसी में संग्रहित करना चाहते हैं या नहीं, लेकिन इसे सर्वर के स्थानीय समय में प्रदर्शित करें (TimeZone
), या आप TimeZone
. को नज़रअंदाज़ करना चाहते हैं या नहीं और इसे हमेशा यूटीसी के रूप में प्रदर्शित करें। मैं बाद वाला मान लूंगा।
टाइमस्टैम्प के लिए आपको बस AT TIME ZONE
. का उपयोग करना होगा दो बार, जैसे:
SELECT TIMESTAMP '2013-08-13 00:00:00' AT TIME ZONE 'Australia/Sydney' AT TIME ZONE 'UTC';
आपको AT TIME ZONE
use का उपयोग करना होगा दो बार। एक बार इनपुट को कन्वर्ट करने के लिए timestamp
करने के लिए timestamptz
तर्क टाइमज़ोन के अनुसार, फिर दूसरा उसे timestamp
. में बदलने के लिए यूटीसी पर।
दुर्भाग्य से (IMO पागल) तरीके से SQL युक्ति AT TIME ZONE
. को परिभाषित करती है TIME
. के लिए , आप वही काम TIME
. के लिए नहीं कर सकते . आपको TimeZone
में हेरफेर करना होगा इसके बजाय चर:
SET TimeZone = 'UTC';
SELECT TIME '07:00' AT TIME ZONE 'Australia/Sydney';
यह अभी भी आपको एक timetz
. के साथ छोड़ देता है TIME
नहीं . तो इसका प्रदर्शन मान timezone
. के साथ बदल जाता है सेटिंग।