时间交叉判断
之前做排课功能时,会判断新增的这门课的时间段是否在某一时间段内存在交叉,总是会有想不全面的时候。所以进行了简单总结,直接在Sql语句中实现。
- 时间段A1—A2,B1—B2
-
第一种
-
时间范围A在时间范围B内
A1————A2
B1————————————B2
B1 <= A1 and B2 >= A2 第二种
-
时间范围A在时间范围B外
A1————————————————A2
B1——————B2
B1 >= A1 and B2 <= A2 第三种
-
时间A范围相交与时间B范围左边
A1————————————A2
B1——————————————B2
(B1 >= A1 and B1 <= A2) and B2>A2 第四种
-
时间A范围相交与时间B范围右边
A1———————————————A2
B1——————————————B2
B1 <= A1 and (B2>=A1 and B2<=A2)
示例
表t begin_time end_time
2017-12-16 11:07:25 2017-12-28 11:07:28
2017-12-06 11:0