会议室预约系统-检验是否被预约核心SQL

会议室预约系统,在工作中经常会用到,这里我记录下,首先看下面一张图

例如有这么一个场景,某公司有一个会议室9:00至11:00预约了,预约这段时间,其他人不得使用会议室。如何通过SQL实现?

注:这里9:00至11:00 对应字段分别是startTime和endTime,10:00至12:00 对应字段分别是newStartTime和newEndTime

  这里10:00至12:00 对应字段分别是startTime和endTime,8:00至9:00 对应字段分别是newStartTime和newEndTime

Select Count(*) From table
Where  StartTime>=newStartTime AND EndTime<=newEndTime 

通过判断Count大于1确定会议室这特定时间段是否有人使用,这里的使用是下面的区间法,如果Count>1 则表示有人预约

根据图一和图二理解起来更容易,可以把图中的时间代入sql中检测下,一测便知,下面是我用两种不同的方法实现如下

8:00-12:00  --预约时间段       8:00-9:00 --预约时间段
nst    net                 nst     net
9:00 -11:00             10:00-12:00
st      et                      st        et

st>=nst AND et<=net  

9:00>=8:00 AND 11:00<=12:00 成立

10:00>=8:00 AND  12:00<=9:00 不成立

posted @ 2021-01-08 18:05  Mshu_peng  阅读(498)  评论(0编辑  收藏  举报