AT TIME ZONE
indien toegepast op een timestamp without timezone
produceert een timestamp with timezone
(en andersom). En deze timestamp with timezone
wordt geïnterpreteerd in de tijdzone van uw sessie (wat in uw geval wordt gedwongen tot UTC
).
Dus de uitdrukking EXTRACT (dow from time at time zone 'Brisbane/Australia')
haalt de dag in Brisbane niet om time
(UTC) , het extraheert de dag die overeenkomt met de geconverteerde time
vanuit het oogpunt van iemand die virtueel in de UTC-tijdzone leeft.
Als ik bijvoorbeeld dit typ en doe alsof ik in UTC ben:
=> 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
Prima, het is zondag 18:01 in UTC en maandag 04:01 in Brisbane
Maar als de verplaatsing van de tijdzone wordt toegepast op een 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
Merk op hoe de tweede kolom verschilt van het vorige resultaat. Het is eigenlijk 20 uur vrij van Brisbane uitgedrukt in UTC:het is vermoedelijk het technisch correcte antwoord op een vraag die niet veel zin heeft.
Vermoedelijk wil je dit:
EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0
die zou moeten antwoorden:is de datum en tijd time
zoals gemeten in UTC overeenkomt met een zondag in Brisbane?