mysql判斷時間段是否有交叉

經常有這樣場景:表中每條記錄都有一個有效期(時間段),要求在添加和修改的時候時間段不重疊。其實就是兩個集合不交叉,只要新插入的條記錄的結束時間大於已存在的記錄的開始時間並且新插入記錄的最小值小於已存在記錄的最大值,那麼這兩個時間段一定存在交叉。 在這裏插入圖片描述
總結起來就一句話:最小值小於最大值並且最大值大於最小值,則一定重疊。

所以,解決上述問題很簡單,查詢表,如果存在這樣記錄,表示待插入這條記錄與表中已有記錄在時間段上有重疊;如果不存在這樣的記錄,表示可以插入。這是插入,修改的需要排除待修改的這記錄。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章