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 中的已知错误:
您可以通过使用时区名称而不是时差来解决这个问题。 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。
我正在尝试将 UTC 时间转换为用户本地时间,它工作正常,直到我尝试将时间转换为 +14:00 时区,结果始终为空,有人知道吗? 这是我的代码:
select CONVERT_TZ(now(), '+00:00', '+14:00')
这是 MySQL 中的已知错误:
您可以通过使用时区名称而不是时差来解决这个问题。 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。