我正在尝试在我的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的前一天。
答案 0 :(得分:1)
您可以指定时区:
where date(event_time, 'America/Chicago') = date_add(current_date, interval -1 day)
请注意,current_date
不需要括号。
逻辑的关键是将UTC时间戳转换为本地时间中的日期。