SQL Server 2008 - сравнение столбца времени с текущим датой - PullRequest
0 голосов
/ 21 января 2012

Я прочитал похожие посты, но пока не нашел ответа, поэтому, если можно:

В моей таблице создан следующий столбец:

[Прибытие] время НЕ NULL,

Какой самый эффективный способ выполнить запрос, подобный этому:

выбрать * из myTable, где «Прибытие через 1 час»?

DATEDIFF (час, GETDATE (), прибытие)

дает мне очень большое значение, возможно, из-за даты 1901,0,0 прибытия. Все еще пытаюсь понять это, так что, если у меня есть быстрый ответ для меня, это будет здорово.

Опять же, производительность имеет решающее значение.

Спасибо.

1 Ответ

2 голосов
/ 21 января 2012

Я бы, вероятно, сделал что-то вроде ...

select >>select list<<
from table
where datediff(minute, getdate(), [Arrival]) < 60

или, используя ваш час

select >>select list<<
from table
where datediff(hour, getdate(), [Arrival]) < 1

edit: Кроме того, если производительность критична, я бы также предложил проверитьвход, чтобы не допустить древние даты.Если у вас есть повторяющиеся расписания, которые не зависят от года или даже месяца (по сути, вы просто ищете часы и минуты), тогда было бы целесообразно использовать DatePart.

select ____
from [table]
where (((datepart(hour, getdate()) = datepart(hour, [Arrival])) AND (datepart(minute, [Arrival]) - datepart(minute, getdate()) < 60)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...