先画一个时间轴,方便理解。
设新的时间块,开始时间为@BeginDate,结束时间为@EndDate。数据库中的数据为BeginDate和EndDate
这样可以直观的看出来,新的时间块插入进来,只需要判断
(@BeginDate>item.EndDate and @EndDate < item.BeginDate)
即可
当然上面是判断不重叠,判断重叠原理一样。
((@BeginDate between BeginDate and EndDate )
OR (@EndDate between BeginDate and EndDate) OR (BeginDate between @BeginDate and @EndDate) OR (EndDate between @BeginDate and @EndDate))