postgresl SQL оператор отображает даты вне интервала - PullRequest
0 голосов
/ 07 мая 2020

В RHEL дата и время в командной строке указываются в формате UT C. Я запрашиваю в своей таблице даты за последний час, но она возвращает мне другие даты / время. Я не знаю, связано ли это с часовым поясом, но я очень запутался, как с ним работать

select to_char(update_dt, 'DD Mon YYYY HH12:MI'),data 
from mytable
where update_dt > current_date - interval '1' hour


      to_char      |   data
-------------------+----------------
 07 May 2020 12:37 | blah
 07 May 2020 12:37 | blah
 07 May 2020 12:37 | blah
 07 May 2020 12:37 | blah
 07 May 2020 12:37 | blah
 07 May 2020 05:23 | huh
 07 May 2020 05:23 | huh
 07 May 2020 05:22 | huh

[root@ip-172-31-1-28 ~]# date
Thu May  7 13:25:03 UTC 2020

1 Ответ

2 голосов
/ 07 мая 2020

Это выражение:

where update_dt > current_date - interval '1' hour

идет со вчерашней полуночи, потому что current_date - это только дата в полночь (в начале даты).

Кажется, вы хотите, чтобы время включало:

where update_dt > now() - interval '1' hour

Вы также можете использовать:

where update_dt > current_timestamp - interval '1' hour

, но now() проще набирать.

...