MySQL判斷時間段是否重合


兩種寫法。如圖,4種重合情況和2種不重合情況。

 

 

 

第一種寫法:

-- 時間段 a,b   
SELECT * FROM table WHERE
	   (start_time >= a and end_time <= b) -- 被包含了
	or (end_time >= a and end_time <=b)
	or (start_time >= a and start_time <=b)
	or (start_time <= a and end_time >=b)

解析:where后的4個條件分別代表了圖中4種重合的情況。
但是第一種情況被2和3包含了,所以簡化一下寫法: 

SELECT * FROM table WHERE
	(end_time >= a and end_time <=b)
	or (start_time >= a and start_time <=b)
	or (start_time <= a and end_time >=b);

 

第二種寫法:

SELECT * FROM table WHERE not (start_time > b or end_time < a);

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM