我想创建一个报告,以生成相对于马尼拉时间当前日期的昨天记录。直到马尼拉时间早上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 1AM
我的预期结果是记录'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点再次运行它,结果是正确的。
答案 0 :(得分:0)
这有点复杂。 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