2012-12-12 169 views
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。 希望你們明白,如有問題請隨時提問。 謝謝。

+0

你嘗試過什麼?我們將幫助您使用特定的代碼,但SO不適合您爲您編寫代碼。 – JaredMcAteer

+0

JaredMcAteer,感謝您的建議,我將展示我下次嘗試的代碼,對不起,這是我的第一篇文章。謝謝。 – Raywin

回答

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 
+0

謝謝,我確實嘗試過,但它獲得ID 2,3,4。任何地方,謝謝你的嘗試! – Raywin

+0

@ user1898109與您的示例數據,我得到2和4這是所有日期重疊的日期範圍與id = 1。您接受的答案僅返回4 .... – fthiella

+0

Ops,抱歉,由於我自己的數據不同,我犯了錯誤。 – 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