小编Tho*_*hom的帖子

Mysql2 gem 在本地(服务器)时间从远程数据库投射日期时间对象

我一遍又一遍地阅读(否则)优秀的 Mysql2 gem 的文档。

我在以 UTC 运行的服务器上托管了一个生产 Rails 应用程序。应用程序的 config.time_zone 设置为“东部时间(美国和加拿大)”。

我们有一个内部 MS Access 为头的应用程序(幸运的是,它使用了 MySQL 数据库),上述 Rails 应用程序连接到该应用程序以同步产品数据、生产计划等。由于应用程序的限制,该 MySQL 服务器无法移入云中,而且——不用说——我们不能将其时区处理更改为 UTC——一切都在 EST 中。

当我从 Rails 应用程序连接到本地数据库以检索数据时,Mysql2(默认情况下)将所有本机数据转换为可消化的 Ruby 对象。但是,我可以让 Rails 应用程序正确解释日期的唯一方法是在 Mysql2 查询命令期间发送 :cast => false,然后在响应处理中对结果运行 Time.zone.parse( string ) . 这需要原生 Ruby 对象转换,这远不如 gem 内置的转换函数那么高效。

我尝试传递文档中提到的 database_timezone 和 application_timezone 选项,但 :local 符号没有使用应用程序的 config.time_zone 属性的预期效果。

thehost.query("SELECT NOW() AS n;", :symbolize_keys => true).each { |result| p result[:n] }

2015-05-19 16:28:41 +0000

thehost.query("SELECT NOW() AS n;", :symbolize_keys => true, :database_timezone => …
Run Code Online (Sandbox Code Playgroud)

timezone datetime ruby-on-rails mysql2

5
推荐指数
1
解决办法
509
查看次数

标签 统计

datetime ×1

mysql2 ×1

ruby-on-rails ×1

timezone ×1