AT TIME ZONE जब किसी timestamp without timezone . पर लागू किया जाता है एक timestamp with timezone produces उत्पन्न करता है (और दूसरी तरफ)। और यह timestamp with timezone आपके सत्र के समय क्षेत्र में व्याख्या की गई है (जो आपके मामले में UTC . के लिए बाध्य है )।
तो व्यंजक EXTRACT (dow from time at time zone 'Brisbane/Australia') ब्रिस्बेन में time . पर दिन नहीं निकालता (यूटीसी) , यह रूपांतरित time . के अनुरूप दिन निकालता है यूटीसी समय क्षेत्र में वस्तुतः रहने वाले किसी व्यक्ति के दृष्टिकोण से।
उदाहरण के तौर पर, जब मैं इसे टाइप कर रहा हूं, अगर यूटीसी में होने का नाटक कर रहा हूं:
=> set timezone to 'UTC';
=> select now(),now() at time zone 'Australia/Brisbane';
now | timezone
------------------------------+---------------------------
2013-10-27 18:01:03.15286+00 | 2013-10-28 04:01:03.15286
ठीक है, UTC में रविवार 18:01 और ब्रिस्बेन में सोमवार 04:01 है
लेकिन अगर टाइमज़ोन विस्थापन को timestamp without timezone . पर लागू करना है :
select now(),now()::timestamp at time zone 'Australia/Brisbane';
now | timezone
-------------------------------+-------------------------------
2013-10-27 18:01:57.878541+00 | 2013-10-27 08:01:57.878541+00
ध्यान दें कि दूसरा कॉलम पिछले परिणाम से कैसे भिन्न है। यह वास्तव में यूटीसी में व्यक्त ब्रिस्बेन से 20 घंटे की दूरी पर है:यह संभवतः एक ऐसे प्रश्न का तकनीकी रूप से सही उत्तर है जिसका कोई खास मतलब नहीं है।
संभवतः आप यह चाहते हैं:
EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0
जिसका उत्तर देना चाहिए:क्या दिनांक और समय time है जैसा कि यूटीसी में मापा गया ब्रिस्बेन में रविवार से मेल खाता है?