mysql - 使用 MariaDB 的 Ruby convert_tz 返回 nil

标签 mysql ruby-on-rails mariadb convert-tz

做常规时:

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/

相关文章:

javascript - Google Maps API : How to replace the source, 从 Google Spreadsheet API 到 MySQL/PHP?

mysql - 如何使用 Mysql 按特定顺序从两个不同的表中选择消息?

ruby-on-rails - 如何查看我的环境变量?

ruby-on-rails - 命令 'rails server' 不工作或 Rails 服务器命令不工作

mysql - 在 SQL 中过滤 "\\%"

mysql - UTF-8字符有问题;我看到的不是我存储的

php - 使用 PHP 连接到 Heroku 应用程序中的 ClearDB 数据库失败,且没有错误消息

php - PDO错误sql状态42000

jquery - Rails - 仅在视觉效果完成后调用 Ajax

mysql - NodeJs 和 MariaDB,存储用户和密码