我正在尝试使用以下代码查找特定日期的事件:
Event.where('starttime BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day)
在 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')
正如上面的 sql 所说,这给了我从今天到明天不同的结果。我可以看到,当 DateTime.now.beginning_of_day 和 DateTime.now.end_of_day 进入 sql 查询时,它们的格式不正确。我需要以某种方式对其进行格式化吗?知道为什么会到今天 7:00 和明天 7:00 吗?
我不知道这是否有区别,但我正在使用 PostgreSQL。
谢谢!