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格式,并通过应用程序时区的时间解析器传递它
这应确保查询的时间采用活动记录喜欢的格式,并包括与应用程序相关的完整时区信息。问题到底是什么?问题到底是什么?