2

做常规时:

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

直接在 MariaDB 服务器上,它将产生:

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

但如果通过 ruby​​ 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 中的东西还是?

4

2 回答 2

1

您可能错过了时区信息。您可以通过使用该mysql_tzinfo_to_sql实用程序或从mysql 开发站点下载表来生成它。

如果您使用的是 Mac 或 Linux,那么以下内容可能对您有用(可能需要更新您的 zoneinfo 的位置)

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -Dmysql
于 2014-03-27T16:41:41.310 回答
0

升级到 5.5.29-MariaDB 解决了这个问题,所以我猜它与 5.5.28 有关。

于 2013-03-08T12:22:49.810 回答