条件的正确方法是什么,如果我需要获取今天范围内的行,例如昨天? 我的意思是这样的:
Model.where("created_at ? OR created_at ?",
Time.now - 3.hours..Time.now + 3.hours,
Time.now - 1.day - 3.hours..Time.now - 1.day + 3.hours)
答案 0 :(得分:2)
你可以这样做:
Model.where("(created_at between ? and ?) OR (created_at between ? and ?)",
DateTime.now - 3.hours, DateTime.now + 3.hours,
DateTime.now - 1.day - 3.hours, DateTime.now - 1.day + 3.hours)
如果你没有OR
,你可以这样做:
Model.where(:created_at => (DateTime.now - 3.hours)..(DateTime.now + 3.hours))
但是既然你有OR
,你只需要写出来"就像我上面展示的那样。
答案 1 :(得分:2)
Model.where("(created_at between ? and ?) OR (created_at between ? and ?)",
3.hours.ago,
3.hours.from_now,
3.hours.ago.yesterday,
3.hours.from_now.yesterday)
答案 2 :(得分:0)
使用或通过Arel进行查询
model = Model.arel_table
Model.where(model[:created_at].eq(DateTime.now - 3.hours..DateTime.now + 3.hours).or(model[:created_at].eq(DateTime.now - 1.day - 3.hours..DateTime.now - 1.day + 3.hours)))