2013-10-29 67 views
1

我有一個查詢命中我的數據庫,它返回一列日期。此查詢的輸出看起來像這樣在PSQL:Ruby on Rails 4.0時區混亂,Postgres

查詢:

SELECT (by_event.event_date AT TIME ZONE 'UTC')::DATE as event_date from events as by_event; 

輸出:

event_date 
------------ 
2012-11-15 
2012-11-16 
2012-11-17 

我跑我的SQL查詢Rails中有這樣的:

results = ActiveRecord::Base.connection.execute(sql) 

results.each do |result| 
    puts result.inspect 
end 

這不幸打印出來:

[{\"event_date\"=>\"2012-11-16\"}, {...}] 

所有的日期都比他們應該提前一天!

顯然這是與時區有關的,但我不知道如何解決它。我如何讓Rails停止衝擊日期?

+0

'config/application.rb'檢查'config.time_zone'設置爲什麼。如果未設置,請將其設置爲所需的時區,並且事情應該沒問題。 –

+0

我曾嘗試調用'Time.zone =「EST」'和'Time.zone =「UTC」',結果沒有任何變化。就在運行查詢之前。 – iTake

回答

1

對於未來的人來說,這裏是我做過什麼來解決這個問題:

SELECT ((by_event.event_date) AT TIME ZONE 'America/New_York')::DATE as event_date, 

醜陋,但它的作品。