私はこのコードで特定の日のイベントを見つけようとしています:
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も、SQLクエリに入ると、DateTime.now.end_of_dayが正しくフォーマットされていないことがわかります。これを特定の方法でフォーマットする必要がありますか?今日の7:00と明日の7:00に行く理由はありますか?
違いがあるかどうかはわかりませんが、PostgreSQLを使用しています。
ありがとう!