2017-01-19 2 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 

заданного выбор диапазона дат от 02-01-2017 до 11-01-2017, как мы выбираем запись STARTDATE п EndDate что является падением между диапазоном дат, заданным как ожидалось?

Хотелось бы ожидать результата таблицы, как показано ниже

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

Try ниже запроса,

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' 
Смежные вопросы