我希望我的报告在CST中显示,而我的数据库是UTC。为此,我需要能够按时间列进行分组,并让数据库执行时区转换。RoR Postgresql时区组未被Heroku工作
这工作对我开发的PostgreSQL箱:
offset = -5
result = ActiveRecord::Base.connection.execute("select date(srl.created_at AT TIME
ZONE '#{offset.to_s}') AS date, count(*) from server_request_logs srl where
srl.created_at between '#{@from.to_s(:db)}' and '#{@to.to_s(:db)}' group by
date(srl.created_at AT TIME ZONE '#{offset.to_s}')")
在Heroku它的错误与:
ActiveRecord::StatementInvalid: PGError: ERROR: time zone "-5" not recognized
它也不会TZInfo的名字,如 '美国/温尼伯' 或支持时区,如“工作CST'从http://www.postgresql.org/docs/7.2/static/timezones.html
有没有人能够得到这个工作?
酷谢谢,我会在早上尝试。还有一件事你如何将rails迁移类型映射到TIMESTAMP WITH TIMEZONE?我的schema.rb有:t.datetime“created_at” t.datetime“updated_at” – 2012-04-23 04:35:15
@BradReid我正在处理类似的问题。回答这个问题。默认情况下,Rails 3将created_at列映射为没有时区的TIMESTAMP。如果还有其他方法可以改变默认行为,我会保持警惕。你弄清楚什么了吗? – GeorgeW 2012-05-02 13:39:29
@GeorgeW:如果这是默认情况下Rails 3所做的,那么您应该将它作为错误报告给维护者。对于初学者来说,当DST结束并且时钟“倒退”时,有一个小时会重复,如果数据库当时正在修改,可能会导致各种问题。 – kgrittn 2012-05-02 15:47:09