Sql 使用带时区的大于查询

Sql 使用带时区的大于查询,sql,postgresql,ruby-on-rails-4,Sql,Postgresql,Ruby On Rails 4,我在做一个简单的查询,查找在给定时区之后创建的记录,例如:2015-11-30T11:16:15.039Z 通过做 User.where(["created_at > ?", '2015-11-30T11:16:15.039Z']) 我被期望不会收到有那个时间的记录,尽管它会返回它。感觉它的行为就像我的查询是创建的>= 我想到的另一件事是,在创建的不是数据库中的时区,它以以下格式存储: created_at ---------------------------- 2

我在做一个简单的查询,查找在给定时区之后创建的
记录,例如:
2015-11-30T11:16:15.039Z

通过做

User.where(["created_at > ?", '2015-11-30T11:16:15.039Z'])
我被期望不会收到有那个时间的记录,尽管它会返回它。感觉它的行为就像我的查询是
创建的>=

我想到的另一件事是,在
创建的
不是数据库中的时区,它以以下格式存储:

         created_at
----------------------------
 2014-06-25 04:51:35.689021
这可能就是问题所在,但我现在不确定如何解决它

非常感谢您的推荐


谢谢

您可以通过在创建记录,时区如下:-

User.where("created_at > ?", Time.zone.now.beginning_of_day)
or 
User.where("created_at > ?", Time.zone.utc_to_local(DateTime.parse("2015-11-30T11:16:15.039Z"))

您可以通过以下方式在时区中创建记录:-

User.where("created_at > ?", Time.zone.now.beginning_of_day)
or 
User.where("created_at > ?", Time.zone.utc_to_local(DateTime.parse("2015-11-30T11:16:15.039Z"))

时区一直是个问题

TL;DR

User.where(['created_at > ?', Time.zone.parse('2015-11-30T11:16:15.039Z')])

在rails应用程序中,最好在
config/application.rb

module MyAwesomeApp
  class Application < Rails::Application
    ...
    config.time_zone = 'Central Time (US & Canada)'
    ...
  end
end
现在,当执行查询时,您可以这样做

User.where(['created_at > ?', Time.zone.parse('2015-11-30T11:16:15.039Z')])
在本例中,我们采用给定的UTC ISO8601格式,并通过应用程序时区的
时间解析器传递它


这应确保查询的时间采用活动记录喜欢的格式,并包括与应用程序相关的完整时区信息。

时区是一个经常出现的问题

TL;DR

User.where(['created_at > ?', Time.zone.parse('2015-11-30T11:16:15.039Z')])

在rails应用程序中,最好在
config/application.rb

module MyAwesomeApp
  class Application < Rails::Application
    ...
    config.time_zone = 'Central Time (US & Canada)'
    ...
  end
end
现在,当执行查询时,您可以这样做

User.where(['created_at > ?', Time.zone.parse('2015-11-30T11:16:15.039Z')])
在本例中,我们采用给定的UTC ISO8601格式,并通过应用程序时区的
时间解析器传递它


这应确保查询的时间采用活动记录喜欢的格式,并包括与应用程序相关的完整时区信息。

问题到底是什么?问题到底是什么?