我正在嘗試從預定義的可用日期和繁忙時間獲取可用日期間隔。
可能的日期表(插槽)
ID SLOT_BEG SLOT_END 1 11/10/2021 09:00:00 11/10/2021 09:15:00 2 11/10/2021 09:15:00 11/10/2021 09:30:00 3 11/10/2021 09:30:00 11/10/2021 09:45:00 4 11/10/2021 09:45:00 11/10/2021 10:00:00
忙時
ID MEET_BEG MEET_END 1 11/10/2021 09:00:00 11/10/2021 09:15:00 2 11/10/2021 09:32:24 11/10/2021 09:46:00
想要的結果:
ID SLOT_BEG SLOT_END 2 11/10/2021 09:15:00 11/10/2021 09:30:00
db<>在這里擺弄
我無法找到處理重疊情況的方法,例如meet ID 2- 它需要阻止 2 個插槽,因為開始日期未對齊。
任何幫助表示贊賞。
uj5u.com熱心網友回復:
not exists與子查詢一起使用測驗 invervals 是否重疊
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
請注意,如果會議在(或 eq)時隙開始之前結束,則時隙在(或等于)會議開始之前結束時,間隔不會重疊。 OR
因此,否定此謂詞以獲得重疊會議并檢查not exists此類會議是否不存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314337.html
下一篇:為每個表行創建n分鐘間隔
