Mysql 查询时间段是否可用,查询时间段是否有交集

  最近遇到 类似, 会议室预订的模型,  基本上 是  会议室 + 时间段来检测是否被占用。

  其实思路比较简单 , 一开始的思路是 去查询 自己选择的时间段 与数据库已经存在的时间段匹配  是否 可用,这种实现太繁琐,而且思路貌似很混乱,

  后来简化思路:  只要查询自己选择的时间段  和 数据库里面的时间段 是否有交集 不就可以了么?

   逆向思维, 利器。

  以下 转自: https://blog.csdn.net/a312024054/article/details/76786739

数据库的字段 start_time, end_time

输入的字段 a,b

第一种

SELECT * FROM test_table
WHERE
(start_time >= a AND start_time <= b)
OR (start_time <= a AND end_time >= b)
OR (end_time >= a AND end_time <= b)

  


第二种

SELECT * FROM test_table
WHERE
NOT (
    (end_time < a)
    OR (start_time > b)
)

  


两种结果相同
以上。

原文地址:https://www.cnblogs.com/taozi32/p/10039177.html