11/10/2021 09:15:00 11/10/2021 09:30:0011/10/2021 09:45:0011/10/2021 10:00:00
我正在尝试从预定义的可用日期和繁忙时间获得可用日期间隔。
可能的日期(槽)表
SLOT_END使用not exists
和子查询测试,如果逆值重叠
select * from T_TMP_SLOT s
where not exists (
select null from T_TMP_MEET m
where not (s.SLOT_END <= m.MEET_BEG or m.MEET_END <= s.SLOT_BEG)
);
ID SLOT_BEG SLOT_END
---------- ------------------- -------------------
2 11.10.2021 09:15:00 11.10.2021 09:30:00
注意间隔不如果会议在插槽开始之前结束(或相等)会议OR
,如果会议开始之前结束(或eq)插槽开始。
因此,对该谓词进行否定以得到重叠会议,并与not exists
检查这种会议是否存在。