根据转换的时区查找记录?

时间:2014-02-05 15:03:43

标签: ruby-on-rails datetime timezone

我有一个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。

2 个答案:

答案 0 :(得分:0)

使用AT TIME ZONE更改时区

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

答案 1 :(得分: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)