解决会议预约中,时间段出现重叠情况(mysql

科技一米 2024-04-03 10:00:32

发布日期: 2021-03-08

问题描述:开发的时候,遇到一个问题,会议室预约,指定时间段进行,会议室使用预约。比方说明天14:00–18:00,这个时间端有人预约了会议室。我想要明天9:00–15:00预约会议室就会提示,该时间段已经有用户预约,需要我更改时间段预约,那么思路很好理解。解决思路使用mysql的查询方式,查询我想要预约的时间段,是否和数据库中指定的信息存在交集情况网上百度了不少情况,提供的处理方式如下SELECT * FROM test_table WHERE(start_time >= a AND start_time <= b)OR (start_time <= a AND end_time >= b)OR (end_time >= a AND end_time <= b)

此方法,处理起来繁琐,而且会出现一种情况,我想要预约10:00–14:00,也会查出来交集的数据,用下面的代码修改起来,很麻烦。

有时候脑袋比较模糊的时候,我们不妨画个逻辑图,去分析分析,比较清晰点,俗话说,自己动手丰衣足食。

时间段情况分析图

如图所示,我们来分析分析,S与S3,S4,S5,S6都存在交集,他们的特征是,结束时间大于等于S的开始时间,开始时间小于登录S的结束时间。S与S1,S2无任何交集,可以推断出,结束时间小于等于S的开始时间,开始时间大于登录S的结束时间。切记一点,交集的时候用 and,无交集的时候使用 or

文章作者: Jack

文章链接: http://blog.yishoukei.top/jack-blog/2021/03/08/%E5%A6%82%E4%BD%95%E9%A2%84%E7%BA%A6%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E6%97%B6%E9%97%B4%E9%87%8D%E5%8F%A0%E7%9A%84%E5%A4%84%E7%90%86/

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack !

0 阅读:0