我想将一些逻辑从我的 php 代码移动到我的 mysql 查询中,这些查询涉及进行时间和日期计算,这些计算需要始终参考 UTC。
在我的函数中使用的 phpini_set('date.timezone', 'UTC');
中包括以保证一致性。
由于我可能无法始终控制系统时区,因此我设置了每个连接的时区,SET time_zone = 'UTC';
这将确保在 MySQL 查询中使用派生日期的任何地方都是 UTC。
但是,我从文档和TJ Crowder对类似问题的出色回答中不清楚的是,这是否对
ADDDATE() ADDTIME() or DATE_ADD()
即根据会话时区执行这些计入夏令时,或者无论如何执行这些计入夏令时。
CONVERT_TZ(dt,from_tz,to_tz)
如果是后者 - 是否可以使用我们从 MySQL 系统表中派生 from_tz 的位置来 CAST 说 ADDTIME() 计算的结果。
注意: - 我们知道@@global.time_zone, @@session.time_zone return 'SYSTEM'
在没有设置时区的情况下,因此不能在转换中使用。