做常规时:
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 中的某些东西还是?
最佳答案
您可能缺少时区信息。您可以通过使用 mysql_tzinfo_to_sql
实用程序或从 mysql dev site 下载表来生成它。 .
如果您使用的是 Mac 或 Linux,那么以下内容可能适合您(可能需要更新您的区域信息的位置)
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -Dmysql
关于mysql - 使用 MariaDB 的 Ruby convert_tz 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274605/