MySQL CONVERT_TZ() 考虑夏令时
问题 1:
是的,你的理解是正确的。 CONVERT_TZ() 在指定时区名称时考虑夏令时。例如,CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN') 确实会在 1 月 1 日返回“19:00:00”,在 7 月 1 日返回“20:00:00”。
问题2:
不,你不需要不断更新MySQL的时区表来保持时区UTC偏移量是最新的。当时区规则发生变化时,MySQL 会自动更新表。
问题 3:
SELECT CONVERT_TZ('2004-01-01 12:00:00' 的结果,'GMT','MET') 产生“NULL”可能表明时区表设置不正确。
要检查这一点,您可以运行以下查询:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
如果结果不为 NULL,则时区表设置正确。
替代时区偏移计算:
如果您没有时间设置好区域表后,您仍然可以使用以下查询计算时区偏移量:
select utc_timezone() - interval user_timezone_offset_in_hours hour from userinfo a where user_id = 999;
但是,这种方法需要您手动更新用户的时区偏移量。
通过 JavaScript 获取时区:
对于 Web 应用程序,您可以通过 JavaScript 获取用户的时区。以下链接提供了如何执行此操作的示例:
[JavaScript 时区检测](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl .DateTimeFormat)
使用 INTERVAL 进行时间计算:
INTERVAL 关键字可以方便地对时间值进行加法和减法。例如,以下查询从当前时间减去 1 天 4 小时 8 分钟:
select now() a, now() - interval 1 day + interval 4 hour + interval 8 minute b;
以上是MySQL 的 CONVERT_TZ() 函数是否处理夏令时?如何解决时区问题?的详细内容。更多信息请关注PHP中文网其他相关文章!