我将如何根据日期和另一列的子集查询为小时

时间:2015-06-01 11:24:00

标签: mysql ruby-on-rails datetime rails-activerecord

我有这些模型 - SportMatch。一个Sport has_many :matchesMatch belongs_to :sport

Sport有一个字段hours_before_inactive,这是匹配开始后的几个小时,它在系统中被视为非活动状态,而匹配则知道它何时通过字段:starts_at

我如何随时查询所有有效比赛?活动记录或直接sql(Mysql)都可以。如果可能,最好是1个查询。

3 个答案:

答案 0 :(得分:0)

对于初学者来说,放弃hours_before_inactive

它应该根据now()

的日期数学函数动态计算

答案 1 :(得分:0)

这可能会对您有所帮助:

Match.includes(:sport).where("starts_at BETWEEN Now() AND  NOW() + INTERVAL sports. hours_before_inactive HOUR")

确保使用mysql和rails服务器的时区

答案 2 :(得分:-1)

这应该有效

Match.where('starts_at BETWEEN '#{time}' AND DATE_ADD('#{time}, INTERVAL 2 HOUR)')