先画一个时间轴,方便理解。

  sql中检查时间是否重叠 随笔

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

设新的时间块,开始时间为@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))

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄