AT TIME ZONE
timestamp without timezone
に適用された場合 タイムゾーン付きのtimestamp with timezone
を生成します (およびその逆)。そして、このtimestamp with timezone
セッションのタイムゾーンで解釈されます(この場合、UTC
に強制されます 。
したがって、式EXTRACT (dow from time at time zone 'Brisbane/Australia')
time
にブリスベンの日を抽出しません (UTC) 、変換されたtime
に対応する日を抽出します UTCタイムゾーンに事実上住んでいる誰かの観点から。
例として、これを入力しているときに、UTCであるふりをしている場合:
=> 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
2番目の列が前の結果とどのように異なるかに注意してください。実際には、UTCで表現されたブリスベンから20時間離れています。おそらく、あまり意味のない質問に対する技術的に正しい答えです。
おそらくあなたはこれが欲しいでしょう:
EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0
答える必要があります:日付と時刻time
UTCで測定すると、ブリスベンの日曜日に対応しますか?