2014-02-05 38 views
1

我有一个created列的日期时间以UTC存储的记录。根据转换后的时区查找记录?

例如,这是存储在一个记录的日期时间:2014-02-01 00:33:25

但如果我检索记录,并将其赋予CST,它会是这样的:

Article.find(1).created.in_time_zone('Central Time (US & Canada)') => Fri, 31 Jan 2014 18:33:25 CST -06:00 

这是一个就这个时区而言,不同的日/月。

我遇到的问题是根据日期查找记录。所以说我想抽出2014年1月31日的所有记录(CST)。我想包括我的例子记录。

我该如何在Rails应用程序中做到这一点?我使用Postgres 9.3.1.0运行Rails 4.0.1和Ruby 2.0.0。

回答

0

使用AT TIME ZONE更改时区

Article.where("date(created AT TIME ZONE 'UTC' AT TIME ZONE 'CST') = '01/31/2014'") 
0

得到了SO之外的一些帮助,得到了我一直在寻找。

说我想找到一个日期范围内的所有记录,这是它会是什么:

Article.where(created: Date.parse("January 1, 2014").in_time_zone('Central Time (US & Canada)').beginning_of_day.utc..Date.parse("January 31, 2014").in_time_zone('Central Time (US & Canada)').end_of_day.utc)