sql - 当我的所有时间戳都是 UTC 时,如何查询“昨天,在我的时区”
问题描述
我试图在 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 时间戳转换为本地时间的日期。
推荐阅读
- mysql - MYSQL GroupBy 只需要取值
- python - 一次一轮循环调度算法
- mysql - 基于同一行值的 MySQL Sum 查询
- proxy - 代理 url 不指向目标 url
- javascript - 将状态从父组件传递给子函数
- asp.net-core - 如何根据从另一个 dbcontext 获取的数据库名称加载动态 dbcontext?
- c# - 如何仅使用 y 轴或使用 transform.lookat 命令锁定 x 和 z 轴进行旋转 {unity}
- python - 有没有办法确定 python 骰子滚轮的成功?
- python - 买/卖地块标记位置错误
- javascript - 如何使用 Vue 将哈希图保存到本地存储?