选择与特定日期重叠的日期范围

4
假设这是我的表格,如下所示:
ID | Startdate           | Enddate
-----------------------------------------------
1  | 2012-12-12 08:00:00 | 2012-12-15 18:30:00
-----------------------------------------------
2  | 2012-12-11 00:00:00 | 2012-12-16 00:00:00
-----------------------------------------------
3  | 2012-12-16 08:00:00 | 2012-12-17 18:30:00
-----------------------------------------------
4  | 2012-12-13 00:00:00 | 2012-12-14 11:30:00
-----------------------------------------------

所选日期范围为Id 1,从2012-12-12 08:00:00到2012-12-15 18:30:00。 我想选择跨越该日期范围的任何日期。

正确的Id将是2和4。 希望你们能理解,如果有任何问题请随时问。 谢谢。


你尝试过什么?我们可以帮你解决具体的代码问题,但是SO并不是一个为你完成编码的地方。 - JaredMcAteer
JaredMcAteer,谢谢你的建议,我下次会展示我尝试过的代码,抱歉这是我第一篇帖子。谢谢。 - Raywin
2个回答

2
select d1.*
from
  dates d1 inner join dates d2
  on d2.id=1 and d1.Startdate<d2.Enddate and d1.Enddate>d2.Startdate
where d1.id<>1

谢谢,我尝试过了,但它得到了ID 2、3、4。无论如何,感谢你的尝试! - Raywin
@user1898109,使用您提供的示例数据,我得到了2和4这两个日期,它们都与id=1的日期范围重叠。而您所接受的答案只返回了4... - fthiella
抱歉,因为我的数据不同,所以我犯了错误。 - Raywin

1
SELECT t1.*
FROM YourTable t1
INNER JOIN
(
   SELECT StartDate, EndDate
   FROM YourTable 
   WHERE Id = 1
) t2 ON t2.StartDate < t1.StartDate AND t2.EndDate > t1.EndDate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接