Получение записей относительно текущей даты в часовом поясе GMT ​​+ 8 - PullRequest
0 голосов
/ 25 мая 2019

Я хотел создать отчет, который генерирует записи вчерашних дней относительно текущей даты в Маниле.Результат запроса неверен до 8 часов утра по времени в Маниле.

Я попытался вычесть 1 день в текущей дате и преобразовать его в часовой пояс Азии / Манилы.

SELECT *
FROM table 
WHERE date_field >= current_date at time zone 'Asia/Manila' - interval '1 day'
AND date_field < current_date at time zone 'Asia/Manila' 

Если текущее время текущей даты вМанила 2019-05-25 1 AM

Мой ожидаемый результат - записи с '2019-05-24 00:00:00' - '2019-05-24 23: 59: 59'

Но у меня есть записи с «2019-05-23 00:00:00» - «2019-05-23 23:59:59»

Попробовал запустить его снова в 8 утра в тот же день ирезультат верный.

1 Ответ

0 голосов
/ 25 мая 2019

Это немного сложно. current_date определяется на дату UTC. Таким образом, когда вы звоните, UTC дата «вчера», и вы уезжаете на один день.

Один из способов исправить это - переместить текущее время в часовой пояс, а затем преобразовать в дату:

WHERE date_field >= (current_timestamp at time zone 'Asia/Manila' - interval '1 day')::date AND
      date_field < (current_timestamp at time zone 'Asia/Manila')::date
...