1. 程式人生 > >sql語句判斷兩個時間段是否有交集

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

場景:資料庫有有兩個欄位.開始時間<startTime>,和結束時間<endTime>,指定一個時間段(a,b),a表示開始時間,b表示結束時間。看資料庫中有沒有與(a,b)衝突的時間段,有的話就返回那條記錄。

解析:兩個時間段相當於兩個集合,不過是有順序的集合。兩個時間段有交集細分有四種情況。用sql直接判斷無交集的語句可能也有,但是目前沒有想到,只想到有交集的語句,如果返回不為空則表明有交集,否則沒有交集。

sql語句:

select * 
from test_table
where (startTime > a AND startTime < b) OR
	    (startTime < a AND endTime > b) OR
	    (endTime > a AND endTime < b)