AT TIME ZONE po zastosowaniu do timestamp without timezone tworzy timestamp with timezone (i na odwrót). I ten timestamp with timezone jest interpretowany w strefie czasowej sesji (co w twoim przypadku jest wymuszone na UTC ).
Tak więc wyrażenie EXTRACT (dow from time at time zone 'Brisbane/Australia') nie wyodrębnia dnia w Brisbane o time (UTC) , wyodrębnia dzień odpowiadający przekonwertowanemu time z punktu widzenia osoby praktycznie żyjącej w strefie czasowej UTC.
Na przykład, kiedy to piszę, jeśli udaję, że jestem w 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
Dobrze, jest niedziela 18:01 w UTC i poniedziałek 04:01 w Brisbane
Ale jeśli zastosujesz przesunięcie strefy czasowej do 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
Zwróć uwagę, jak druga kolumna różni się od poprzedniego wyniku. W rzeczywistości jest to 20 godzin od Brisbane wyrażone w UTC:prawdopodobnie jest to technicznie poprawna odpowiedź na pytanie, które nie ma większego sensu.
Przypuszczalnie chcesz tego:
EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0
które powinno odpowiedzieć:czy data i godzina time mierzony w UTC odpowiada niedzieli w Brisbane?