Mysql 如何查詢時間段交集
Mysql 查詢時間段交集
使用場景
數據庫表有兩個字段starttime,endtime。現在給出(a,b)的時間段,查出和(starttime,endtime)時間段有交集的數據。
sql
select * from TABLENAME where (starttime > a AND starttime < b) OR (starttime < a AND endtime > b) OR (endtime > a AND endtime < b) OR (starttime = a AND endtime = b);
Mysql 查詢兩個時間段是否有交集的情況
數據庫的字段 start_time, end_time
輸入的字段 a,b
第一種
SELECT * FROM test_table WHERE (start_time >= a AND start_time <= b) OR (start_time <= a AND end_time >= b) OR (end_time >= a AND end_time <= b)
第二種
SELECT * FROM test_table WHERE NOT ( (end_time < a OR (start_time > b) )
兩種結果相同。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Mybatis和Mybatis-Plus時間范圍查詢方式
- mybatis判斷int是否為空的時候,需要註意的3點
- Java查詢時間段(startTime–endTime)間的數據方式
- MySQL去除重疊時間求時間差和的實現
- Java定時任務schedule和scheduleAtFixedRate的異同