How to check if a time span overlaps other time spans
本问题已经有最佳答案,请猛点这里访问。
我一直在问如何检查一个时间跨度是否与数据库中的其他时间跨度重叠。
例如,我的表如下所示:
现在,我尝试进行一个查询,检查时间跨度是否与其中一个时间跨度重叠(并且它应该返回任何重叠的时间跨度)。
当我尝试
14:00:00 - 15:00:00 时,它应该返回第二行。当我尝试
13:30:00 - 14:15:00 时,它不应该返回任何东西。当我尝试
10:00:00 - 15:00:00 时,它应该返回两行。
我很难解释,但我希望有人能理解我,帮助我。
当检查时间跨度重叠时,您只需要这样一个查询(用您的值替换@start和@end):
对于非重叠
因此,颠倒逻辑,对于重叠
2这是SQL小提琴http://sqlpiddle.com/!2/E4AEE/37
也可以使用between运算符,相对而言,这应该比在where子句中使用三个逻辑表达式更快。
1 2 3 4 5 6 7 |
假设您的时间跨度由两个值表示——