mysql-判断查询时间段是否存在交集

场景

数据库表中有两个字段,start_time和end_time,指定一个时间段 [start, end],start表示开始时间,end表示结束时间,查询在这个时段内,数据表中是否存在交集的start_time和end_time记录,若存在,返回对应记录的主键。

图解

  1. end_time处于[start, end]之间
  1. start_time处于[start, end]之间

  1. start_time和end_time包含[start, end]

SQL

1
2
3
4
5
6
7
8
select
id
from test_table
where
end_date>=start_date
and ((start_time >= #{start} AND start_time <= #{end})
OR (start_time < #{start} AND end_time > #{end})
OR (end_time >= #{start} AND end_time <= #{end}))
0%