PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:избор на редове, които се появяват в определен ден от седмицата, в определена часова зона

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

Добре, неделя е 18:01 по UTC и понеделник 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 часа разстояние от Бризбейн, изразено в UTC:вероятно това е технически правилният отговор на въпрос, който няма много смисъл.

Вероятно искате това:

EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0

който трябва да отговори:дали датата и часът са time измерено в UTC съответства на неделя в Бризбейн?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker exec - не може да извика postgres с променливи на средата

  2. LATERAL JOIN не използва индекс на триграма

  3. Избиране, докато редът съвпадне в postgresql?

  4. Добавяне на инсталатора на PostgreSQL към моя собствен инсталатор на приложения

  5. PostgreSQL 12:Внедряване на K-Nearest Neighbor Space Partitioned Generalized Search Tree Indexs