问题 1:夏令时考虑
是的,你是对的。通过指定时区名称(例如“美国/东部”),CONVERT_TZ() 会考虑夏令时。调用 CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') 会在一月份返回 '19:00:00',从而识别出东部时间比 UTC 晚 5 小时。在夏令时期间,结果将为“20:00:00”,因为东部时间提前一小时。
问题 2:时区表更新
如果您仅依赖时区名称,不需要不断更新时区表来保持偏移量最新。 CONVERT_TZ() 考虑当前时区设置和夏令时规则。
问题 3:对 NULL 返回进行故障排除
示例查询中的 NULL 返回 (CONVERT_TZ(' 2004-01-01 12:00:00','GMT','MET')) 确实可能是由于缺少时区表造成的。要验证这一点,请运行以下查询:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
如果也返回 NULL,则表明时区表尚未正确设置。
其他提示
您可以使用MySQL中的INTERVAL关键字来处理时间计算,而不是直接添加或减去时间。例如,您可以使用以下命令减去一天并添加四小时:
now() - interval 1 day + interval 4 hour
以上是MySQL 的 CONVERT_TZ() 函数如何处理时区和夏令时?的详细内容。更多信息请关注PHP中文网其他相关文章!