Я бы рекомендовал не использовать между при сравнении даты и времени. Результат часто не тот, который вы хотите.
МЕЖДУ возвращает ИСТИНА, если значение
test_expression больше чем или
равно значению begin_expression
и меньше или равно значению
end_expression.
Тестовые данные для демонстрации
declare @T table (dt datetime)
insert into @T values('2011-04-12T09:00:00')
insert into @T values('2011-04-12T10:00:00')
insert into @T values('2011-04-12T11:00:00')
insert into @T values('2011-04-12T12:00:00')
Запрос с использованием
select *
from @T
where dt between '2011-04-12T10:00:00' and '2011-04-12T11:00:00'
Результат: в результат включено 11:00.
dt
2011-04-12 10:00:00.000
2011-04-12 11:00:00.000
Перепишите запрос, используя вместо него >=
и <
.
select *
from @T
where
dt >= '2011-04-12T10:00:00' and
dt < '2011-04-12T11:00:00'
Результат
dt
2011-04-12 10:00:00.000
Название вопроса намекает на то, что вы хотите проверить перекрывающиеся интервалы дат. Если это так, вы можете взглянуть на этот вопрос Как определить в SQL Server, перекрывает ли диапазон dateTime другой .