bot*_*bot 5 postgresql ruby-on-rails ruby-on-rails-3
我试图使用此代码在特定日期查找事件:
Event.where('starttime BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day)
Run Code Online (Sandbox Code Playgroud)
在rails控制台中,如果我运行,DateTime.now.beginning_of_day我会得到我所期望的:
2012年4月9日星期一00:00:00 -0700
我可以看到问题出在哪里,但在rails控制台中查看SQL.不知何故,当日期进入SQL查询时,它会自动格式化为错误的日期和时间.
SELECT "events".* FROM "events" WHERE (starttime BETWEEN '2012-04-09 07:00:00' AND '2012-04-10 06:59:59')
Run Code Online (Sandbox Code Playgroud)
这给了我从今天到明天不同的结果,正如上面的sql所说的那样.我可以看到,当DateTime.now.beginning_of_day也使DateTime.now.end_of_day进入sql查询时,它们的格式不正确.我需要以某种方式格式化吗?知道为什么会到今天的7点和明天的7点?
我不知道它是否有所作为,但我正在使用PostgreSQL.
谢谢!
rai*_*inz 16
请参阅:http://railscasts.com/episodes/106-time-zones-in-rails-2-1
我认为你上面引用的时间实际上是同一时间,只有一个是UTC时间(你是在太平洋时间吗?).要解决此问题,您可以尝试设置:
config.time_zone ="太平洋时间(美国和加拿大)"
在你的environment.rb
你也可以尝试:
DateTime.now.utc.beginning_of_day
DateTime.now.utc.end_of_day
Run Code Online (Sandbox Code Playgroud)
所以你按照DB使用UTC
| 归档时间: |
|
| 查看次数: |
8799 次 |
| 最近记录: |