今天凌晨 2 点,我有了一个想法,实际上我解决了我的问题。我必须这样做的方法是将查询分成 2 个带有 or 的 where 语句。基本上我正在做的是检查 end_time 是否大于 start_time (对于整个像 01:00 到 10:00)以及 end_time 小于 start_time 的地方(这意味着 end_time 跨越午夜像 22 :00 至 02:00)。
def time_span_search(current_time)
CameraEvent
.where('end_time > start_time and start_time <= ? and end_time >= ?', current_time, current_time)
.or(
CameraEvent
.where('end_time <= start_time and start_time <= ? and start_time <= ? and end_time >= ? and end_time <= ?', current_time, '23:59', '00:00', current_time) )
.pluck(:id)
end