当我的所有时间戳都是 UTC 时,如何查询"Yesterday, in my timezone"



我正在尝试在我的 where 子句中包含一种根据我当前时区自动提取前一天数据的方法。我的所有数据都以 UTC 时间戳存储。

我可以将时间戳从UTC更改为我的时区("美国/芝加哥"(,并且可以自动提取过去X天的数据;例如,前一周的数据,而无需手动输入日期。但是我无法弄清楚如何在我的 where 子句中同时执行这两项操作。

SELECT *  
FROM `my-data-set` 
WHERE
event_time >= CAST(DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AS TIMESTAMP)
AND event_time < CAST(DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY) AS TIMESTAMP)

我希望能够查看我所在时区的前一周或前一天,而不是前一天的 UTC 日期。

您可以指定时区:

where date(event_time, 'America/Chicago') = date_add(current_date, interval -1 day)

请注意,current_date 不需要括号。

逻辑的关键是将 UTC 时间戳转换为本地时间的日期。

最新更新