convert_tz返回null

我知道这听起来很愚蠢,但是当我使用

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time 

它输出NULL。 我在Ubuntu 12.04 64位中使用MySQL Workbench,它在我的其他笔记本电脑/操作系统(也使用MySQL Workbench)中工作。

如果您还没有将时区表加载到mysql中,就会发生这种情况。

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

我发现这个线程花了一些时间试图找出为什么在接受的答案(这是在MySQL的开发网站相同)命令运行后,该命令无法在时区之间进行转换,如

 SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time 

事实certificate,在OS X上有两个文件导致问题: /usr/share/zoneinfo/Factory/usr/share/zoneinfo/+VERSION

修复…暂时移动这些文件到不同的位置,如/usr/share/zoneinfo/.bak/允许命令

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

完全填充所有预期的时区信息。

这可能是也可能不是我安装的MySQL版本中的一个错误:

 $ mysql --version mysql Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using EditLine wrapper 

我也在STRICT_MODE操作。

无论如何,我希望这可以为寻求修复的人们节省一些麻烦。

除Windows环境外,您可以通过设置时区

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

Windows环境下,

1. download Time zone description tables from http://dev.mysql.com/downloads/timezones.html 1. download Time zone description tables from

2. Stop MySQL server

3. Put then inside Mysql installation package (即C:\ Program Files \ MySQL \ data \ mysql)`

4. Start MySQL server

..你的工作完成了..

如果仍然是NULLCONVERT_TZ下载这些数据库表,并将其插入到MySQL数据库http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html

现在你的问题将得到解决.. 🙂

如果您在Windows上使用MySql,则必须将时区数据加载到mysql模式中。 这是一个很好的HOWTO: http : //www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

如果你不这样做,函数CONVERT_TZ将不会识别你的input时区(例如:'UTC','Asia / Jakarta'),并且只返回NULL。

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

如果您data too long for column 'abbreviation' at row 1得到的错误data too long for column 'abbreviation' at row 1请参阅: https : //bugs.mysql.com/bug.php?id = 68861

修复将运行以下

这将添加一行来禁用mysql模式,并允许MySQL插入截断的数据,这是因为mysql的错误,其中mysql将在最后添加一个空字符(根据上面的链接)

 mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql (if the above gives error "data too long for column 'abbreviation' at row 1") mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/zut.sql echo "SET SESSION SQL_MODE = '';" > /tmp/mysql_tzinfo_to.sql cat /tmp/zut.sql >> /tmp/mysql_tzinfo_to.sql mysql --defaults-file=/etc/mysql/my.cnf --user=verifiedscratch -p mysql < /tmp/mysql_tzinfo_to.sql 

MAMP PRO

  1. 打开Terminal
  2. cd /usr/share/zoneinfo/
  3. sudo mv +VERSION ~/Desktop
  4. cd /applications/MAMP/Library/bin
  5. sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
  6. sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
Interesting Posts