PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:wybieranie wierszy, które występują w określony dzień tygodnia, w określonej strefie czasowej

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?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zweryfikować nakładające się czasy w Railsach za pomocą postgresql

  2. Różnica Postgresql między datami w dwóch kolumnach?

  3. Ebean szuka niewłaściwej nazwy sekwencji w Play Framework 2

  4. Django + Psycopg2:InterfaceError:obsługiwany tylko protokół 3

  5. Jak naprawić BŁĄD:kolumna c.relhasoids nie istnieje w Postgresie?