Как проверить, есть ли диапазон данных между 2 данными датами? - PullRequest
4 голосов
/ 12 апреля 2011

В моем приложении есть время начала и время окончания.Теперь мне нужно проверить, есть ли какое-то время между этими моментами в SQL-запросе.

Как мне написать запрос.

Спасибо

Ответы [ 3 ]

11 голосов
/ 12 апреля 2011

Это должно сработать для вас.

Select * From MyTable
Where timecreated Between Cast('7/20/08 12:01:01' As DateTime) And Cast('7/20/09 12:01:01' as DateTime)
1 голос
/ 12 апреля 2011

Я бы рекомендовал не использовать между при сравнении даты и времени. Результат часто не тот, который вы хотите.

МЕЖДУ возвращает ИСТИНА, если значение 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 другой .

0 голосов
/ 12 апреля 2011

Это также будет работать: -

 select * from tablename where time between '7/7/2009 12:35:35' and '7/7/2010 23:35:35'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...