我有一個時間字段在表「時間戳無時區」。當記錄保存到數據庫時,utc時間可能與當地時間不同。但是,我需要按日期對記錄進行分組。因此,我做這樣的事情:導航組由utc日期
result = transmissions.joins(:report).where('reports.time::timestamp::date = ?', record.time.to_date)
的問題是,如果UTC日期是在不同的日期比本地時間,那麼該記錄中不包括的結果。任何想法如何得到正確的結果?
而且很顯然,我不能改變的「無時區」之一:
Rails database-specific data type
它說: 「得出的結論是,在架構遷移的默認ActiveRecord的日期時間和時間戳列類型不能進行修改,以強制的PostgreSQL與時區一起使用時間戳。「
所以我不知道這樣的事情如何按日期組,因爲顯然是錯誤的:
Unit.where(id: 1100).first.reports.order("DATE(time)").group("DATE(time)").count
=> {"2013-12-14"=>19, "2013-12-15"=>5}
返回值是完全錯誤的。所有25條記錄應在2013年12月14日發佈,2013年12月15日發佈0條記錄。
這裏是一篇博客文章,我寫在鐵軌和時區http://jessehouse.com/blog/2013/11/15/working-with-timezones-and-ruby-on-rails/ - 它不包括你的情況,但我想你可能需要使用postgres'在時區'或做分組在紅寶石 – house9