2013-03-07 87 views
1

在做常规:直接红宝石CONVERT_TZ将返回零

select convert_tz(now(), "UTC", "Europe/London") 

一个MariaDB的服务器上,它会产生:

+-------------------------------------------+ 
| convert_tz(now(), "UTC", "Europe/London") | 
+-------------------------------------------+ 
| 2013-03-07 16:01:32      | 
+-------------------------------------------+ 

但是,如果通过红宝石1.8.7或1.9来完成。 3宽度:

q = 'select convert_tz(now(), "UTC", "Europe/London")' 
ActiveRecord::Base.connection.select_all(q) 

就会产生:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => nil 

做同样针对MySQL的安装:

q = 'select convert_tz(now(), "UTC", "Europe/London")' 
ActiveRecord::Base.connection.select_all(q) 

结果:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => "2013-03-07 16:05:14" 

现在MySQLWorkbench测试,相同的不良结果发生存在,则返回null的转换时间,而不是。

所以我想这是在MariaDB或?

回答

0

升级到5.5.29-MariaDB的解决了这个问题,所以我想这是关系到5.5.28。

0

您可能会错过时区信息。您可以通过使用mysql_tzinfo_to_sql实用程序或从mysql dev site下载表来生成该表。

如果你在Mac或Linux,那么下面很可能会为你工作(可能需要更新您的时区信息的位置)

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -Dmysql