如何根据 mysql 中的开始时间和结束时间获取记录

How to fetch records based on from and end time in mysql

我在从 table 中获取记录时遇到了一个问题。我的 table 看起来像下面这样:-

id     market_id       opening_time       closing_time    day      p_slot
 1       1               06:30:00           09:30:00       Friday         1
 2       1               09:30:00           13:30:00        Friday         0
 3       1               17:30:00           19:30:00        Friday         0
 4       1               19:30:00           23:30:00        Friday         0

我想根据 opening_time 和关闭时间过滤数据。我试过下面的查询

select * 
from `timing` 
where market_id = 1 
and day = 'Friday' 
and (opening_time <= '13:45:00' or closing_time <= '15:30:00') 
and (opening_time <= '15:30:00' or closing_time <= '15:30:00')

但是当我 运行 这个查询时,我得到的响应是错误的

 id     market_id       opening_time       closing_time    day      p_slot
 1       1               06:30              09:30        Friday         1
 2       1               09:30              13:30        Friday         0

但是是的,如果用户搜索下面的查询,那么上面的输出是正确的

select * 
from `timing` 
where market_id = 1 
and day = 'Friday' 
and (opening_time <= '09:15:00' or closing_time <= '12:30:00') 
and (opening_time <= '12:30:00' or closing_time <= '12:30:00')

谁能帮我解决这个问题?我想要 opening_timeclosing_time 范围内的结果。

注意:- 我希望用户使用开始时间搜索:- 9:15:00 和结束时间 12:30:00 我只想获取第一行和第二行,如果用户使用 13:45:00 进行搜索15:30:00 在这种情况下,我不想过滤任何行

您的条件应该是:

closing_time >= from_time and opening_time <= end_time:

喜欢:

select * 
from `timing` 
where market_id = 1 
and day = 'Friday' 
and closing_time >= '13:45:00' and opening_time <= '15:30:00';

参见demo