Rails查询两次

Kyl*_*cot 12 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个有Checkin模型的rails应用程序.我想查找当天特定时间范围内的所有记录.我如何写一个where来获取在12PM到4:30 PM之间创建的所有记录?

Ism*_*reu 46

@ x1a4的答案应该对你有好处,但是你可以使用范围以更可读和更短的方式来做.

 Checkin.where(created_at: Time.parse("12pm")..Time.parse("4:30pm"))
Run Code Online (Sandbox Code Playgroud)

它应该生成类似于:

SELECT "checkins".*
FROM "checkins" 
WHERE ("checkins"."created_at" BETWEEN '2012-05-28 12:00:00.000000' AND '2012-05-28 16:30:00.000000')
Run Code Online (Sandbox Code Playgroud)

您可以Time.parse("12pm")使用任何其他方式进行更改以创建时间.


x1a*_*1a4 10

假设UTC时区,它看起来会起作用:

Record.where('created_at > ? AND created_at < ?', Date.today + 12.hours, Date.today + 16.5.hours)
Run Code Online (Sandbox Code Playgroud)

或者BETWEEN:

Record.where('created_at BETWEEN ? AND ?', Date.today + 12.hours, Date.today + 16.5.hours)
Run Code Online (Sandbox Code Playgroud)

BETWEEN可能包括或不包括该范围内的第二个值.Postgres包括它.