SQL判斷兩個日期時間區間是否有相交

2021-08-17 07:43:18 字數 867 閱讀 8850

需求:找出時間a到b時間段是否已經請過假了,或者這個期間已經請過假了

select count(id) from tblname where ...

and ( (cast(concat(date_from,' ',time_from) as timestamp)    > '2018-03-30 08:00' 

and cast(concat(date_from,' ',time_from) as timestamp)   < '2018-03-30 12:00')

or( cast(concat(date_from,' ',time_from) as timestamp)   < '2018-03-30 08:00' 

and cast(concat(date_to,' ',time_to) as timestamp)  > '2018-03-30 08:00')

or (cast(concat(date_from,' ',time_from) as timestamp)  = '2018-03-30 08:00' 

and cast(concat(date_from,' ',time_from) as timestamp)  <= '2018-03-30 12:00')

)有,則表示在這個時間段裡有資料

解釋:找開始時間a到結束時間b的區間,是不是已經在資料庫中有了

開始時間小於a,並且結束時間大於a;

開始時間小於b,並且結束時間大於等於b;

開始時間大於a,並且結束時間小於b;

開始時間等於a,並且結束時間大於等於b。

見下面抽象** -_-||:

演算法 判斷兩個區間是否重疊

判斷兩個區間是否重疊 假設區間表示為 start,end 先存在兩個區間a,b.兩個區間的關係有兩種 重疊與不重疊 重疊的情況有4種,兩種相交,兩種包含 很容易想到,此處不示意 不重疊有兩種情況 a在b前面,a在b後面 因此很容易得到判斷區間重疊的方法 1 正向判斷,列出四種重疊的情況,滿足其一,則...

js判斷兩個區間是否存在交集

思路 兩個區間,兩者的最小值中的最大值 兩者最大值的最小值時 就存在交集 let arr1 1,4 let arr2 2,5 let arr3 5,2 let arr4 4,5 let arr5 9,5 let arr6 1,4 let arr7 5,6 let arr8 5,5 判斷兩個區間是否相...

sql語句判斷兩個時間段是否有交集

場景 資料庫有有兩個欄位.開始時間,和結束時間,指定乙個時間段 a,b a表示開始時間,b表示結束時間。看資料庫中有沒有與 a,b 衝突的時間段,有的話就返回那條記錄。解析 兩個時間段相當於兩個集合,不過是有順序的集合。兩個時間段有交集細分有四種情況。用sql直接判斷無交集的語句可能也有,但是目前沒...