我正在尝试将时区加载到我的 MySql 实例(在 Ubuntu 上运行)中,以便我可以使用 CONVERT_TZ 函数,但是当我运行以下命令时:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
我得到以下输出,当我尝试使用 CONVERT_TZ
时,它仍然返回 NULL
:
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/posix/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/right/Mideast/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
有谁知道为什么会发生这种情况?
附言:
我正在使用以下方法转换日期时间:
CONVERT_TZ(NOW(),'UTC', 'PCT')
是否有可能我只是转换不正确,这就是 NULL 结果的原因?
最佳答案
这是 Debian 上 Riyadh* 时区文件的错误:
http://bugs.mysql.com/bug.php?id=20545
推荐的解决方法是简单地忽略警告(如果您当然不需要这些时区):
mysql_tzinfo_to_sql /usr/share/lib/zoneinfo | mysql -uroot --force mysql
使用--force
选项导入TZ 数据后,您将能够使用CONVERT_TZ
。这是我刚刚完成的内容的转录:
sh$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql --force 2> /dev/null
Enter password: ********
sh$ mysql -p
Enter password: ********
Server version: 5.1.49-3 (Debian)
mysql> select convert_tz(now(), 'UTC', 'CET');
+---------------------------------+
| convert_tz(now(), 'UTC', 'CET') |
+---------------------------------+
| 2013-08-13 21:04:34 |
+---------------------------------+
1 row in set (0.00 sec)
关于mysql - 无法加载时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216198/