我希望我的報告在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