2017-01-19 79 views
0

我有記錄如下從給定的日期和日期到選擇記錄。

StartDate | EndDate | ID 
--------------------------------- 
25-12-2016  30-12-2016 0 
01-01-2017  05-01-2017 1 
10-01-2017  12-01-2017 2 
01-02-2017  05-02-2017 3 

給出從2017年2月1日選擇日期範圍,直到2017年11月1日,我們如何選擇記錄開始日期結束日期ñ是秋天在預期的日期範圍之間?

想指望表結果如下

StartDate | EndDate | ID 
------------------------------ 
01-01-2017  05-01-2017 1 
10-01-2017  12-01-2017 2 

回答

2

所以,基本上你問如何檢查兩個日期範圍是否重疊。 這樣做的方法是檢查一個在另一個結束之前開始,而另一個在結束之前開始。您可以在tag wiki.

看到一個可視化您的查詢應該是這樣的:

SELECT StartDate, EndDate, ID 
FROM YourTable 
WHERE StartDate <= '11-01-2017' 
AND EndDate >= '02-01-2017' 
0

嘗試下面的查詢,

DECLARE @V_START_DATE DATETIME = '2017-01-02' 
     ,@V_END_DATE DATETIME = '2017-01-11' 

SELECT * 
FROM @TABLE 
WHERE StartDate BETWEEN @V_START_DATE AND @V_END_DATE 
    OR EndDate  BETWEEN @V_START_DATE AND @V_END_DATE 
0

嘗試下面的查詢

SELECT * FROM DateRanges 
WHERE StartDate BETWEEN '02-01-2017' and '11-01-2017' 
OR ENDdate BETWEEN '02-01-2017' and '11-01-2017'