MySQL CONVERT_TZ() returns 当参数之一为“+14:00”时为空

MySQL CONVERT_TZ() returns null when one of the arguments is "+14:00"

我正在尝试将 UTC 时间转换为用户本地时间,它工作正常,直到我尝试将时间转换为 +14:00 时区,结果始终为空,有人知道吗? 这是我的代码:

select CONVERT_TZ(now(), '+00:00', '+14:00')

这是 MySQL 中的已知错误:

MySQL does not recognize timezone offset UTC +14:00

您可以通过使用时区名称而不是时差来解决这个问题。 UTC +14:00 等于 Pacific/Kiritimati 时区。因此,如果您将查询修改为:

SELECT CONVERT_TZ(NOW(), '+00:00', 'Pacific/Kiritimati')

SELECT CONVERT_TZ(NOW(), 'UTC', 'Pacific/Kiritimati')

那么您将获得有效日期,而不是 NULL

但是有一个条件。您的 MySQL 引擎需要时区列表。如果以上查询仍然 returns NULL,这意味着您没有将时区列表加载到您的 MySQL 引擎中。

可能你还需要 运行 这个命令:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

请查看此线程以获取有关加载时区列表的更多信息:convert_tz returns null

测试于 MySQL 5.6.36