モデルのあるRailsアプリがありCheckin
ます。当日の特定の時間範囲内にあるすべてのレコードを検索したい。where
午後12時から午後4時30分までに作成されたすべてのレコードを取得するには、どのように記述すればよいですか?
質問する
29569 次
3 に答える
54
@ x1a4の答えはあなたにとって良いはずですが、範囲を使用して、より読みやすく短い方法でそれを行うことができます.
Checkin.where(created_at: Time.parse("12pm")..Time.parse("4:30pm"))
次のようなものが生成されます。
SELECT "checkins".*
FROM "checkins"
WHERE ("checkins"."created_at" BETWEEN '2012-05-28 12:00:00.000000' AND '2012-05-28 16:30:00.000000')
Time.parse("12pm")
時間を作成する他の方法で変更できます。
于 2012-05-28T02:41:16.043 に答える
14
これは、UTC タイム ゾーンを想定して動作するように見えます。
Record.where('created_at > ? AND created_at < ?', Date.today + 12.hours, Date.today + 16.5.hours)
またはBETWEEN
:
Record.where('created_at BETWEEN ? AND ?', Date.today + 12.hours, Date.today + 16.5.hours)
BETWEEN
範囲内の 2 番目の値を含む場合と含まない場合があります。Postgres にはそれが含まれています。
于 2012-05-28T02:11:16.753 に答える
0
以下の gem を使用して、日付間のレコードを見つけることができます。
この宝石は非常に使いやすく、より明確です [星によって][1]。私はこの宝石を使用しています.APIはより明確で、ドキュメントもよく説明されています.
Post.between_times(
Time.zone.now - 3.hours, # all posts in last 3 hours
Time.zone.now
)
ここでは、私たちのフィールドも通過できますPost.by_month("January", field: :updated_at)
ドキュメントを参照して、試してみてください。
于 2015-02-05T12:58:20.747 に答える