Rails查询两个小时之间的时间戳
我在Ruby on Rails中遇到问题,我需要允许用户设置两个时间列,然后查询该模型的所有实例,这些实例具有两个时间戳的小时内的当前时间。 天无所谓,只是在指定的时间内是开始和结束时间戳。
谢谢,
布赖恩
像这样的东西应该工作(假设MySQL):
Model.where("TIME(created_at) BETWEEN '07:00:00' AND '09:00:00'")
您可以使用以下命令将Time
实例转换为此格式:
Time.now.strftime("%T") #=> "23:02:25"
如果开始时间大于结束时间,则可以反转逻辑,因此不是:
Model.where("TIME(created_at) BETWEEN '23:00:00' AND '01:59:59'")
你可以使用:
Model.where("TIME(created_at) NOT BETWEEN '02:00:00' AND '22:59:59'")
你可能正在寻找类似的东西
Model.where("starts_at >= ? AND ends_at =< ?", Time.current, Time.current)
或者,您可以使用占位符条件使查询更简洁。
Client.where("created_at >= :start_date AND created_at <= :end_date", {start_date: params[:start_date], end_date: params[:end_date]})
你如何解决这个问题将取决于你使用什么数据库b / c,因为我知道这种类型的操作没有任何ActiveRecord
助手。 但是有日期函数可以帮助你解决这个问题
Postgres日期函数
Mysql Date函数
例如,在Postgres中你可能会尝试
extract(hour from timestamp 'a') BETWEEN (extract(hour from timestamp 'b') AND extract(hour from timestamp 'c'))