sqlserver 时间段交叉查询语句(最简短的)

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:54:20
表1
id 起始时间 截止时间
1 2008-8-1 2008-8-20
2 2008-5-1 2008-5-20
已知一个时间段a到b,求表里面与该时间段交叉的记录
比如,2008-7-5--2008-8-5 与 2008-8-1---2008-8-20 就算时间交叉
我已经知道一种写法就是
where (起始时间 between a and b) or (截止时间 between a and b) or
(a between 起始时间 and 截止时间) or (b between 起始时间 and 截止时间)
不知道有没有更好的写法
liuleiqt 的回答是有问题的,交叉也包含包括和被包括,你的语句有些情况会漏掉

你说的对,少一种情况(ab在起至时间之间的)。
where (起始时间 between a and b) or (截止时间 between a and b) or (a between 起始时间 and截止时间)

你这种写法已经包含了全部的可能,没有更简便的写法了