【发布时间】:2011-02-01 04:06:06
【问题描述】:
我正在尝试建立一个数据库来存储用户指定的每日警报时间。例如,用户希望在每天早上 7:00 到早上 7:30 之间满足某些条件时收到警报。在尝试实现这一点时,我需要适应夏令时。这是我尝试的解决方案:
- 将用户本地时区(长格式,例如“美国/东部”)信息存储在一个表中(例如 userInfo),并将闹钟时间存储在另一个表中(例如 userAlarms)。
- 查询 userAlarms 表时,将 UTC 时间转换为用户本地时间,由存储在 userInfo 表中的 tz 列通过
CONVERT_TZ(UTC_TIME(), 'UTC', userInfo.tz)指定。
问题 1. 据我了解,指定时区名称(如美国/东部)应该考虑夏令时。例如,在 1 月 1 日调用 CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') 应该产生“19:00:00”,但在 7 月 1 日调用应该产生“20:00:00”。我说的对吗?
问题2。如果Q1正确,我是否需要不断更新MySQL的时区表以保持时区UTC偏移量是最新的?
问题 3. MySQL 文档SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') 中给出的示例在我的服务器上运行时会产生“NULL”。这可能是由于没有设置时区表造成的吗?
我该如何检查?
【问题讨论】:
-
如果不需要安装 CONVERT_TZ:stackoverflow.com/a/67337491/3622569
标签: mysql timezone convert-tz