Sql Server получит строку, ближайшую (в будущем) к сегодняшнему дню - PullRequest
2 голосов
/ 17 мая 2011

У меня есть таблица, которая содержит историю элементов с начальной датой (дата / время) - она ​​должна разрешать только один элемент на дату. Существует процедура проверки, которая будет принимать дату и возвращать код (код причины успеха / неудачи) вместе со «следующим» историческим элементом, ближайшим к сегодняшнему дню.

Если это данные таблицы (идентификатор даты заголовка):

1 16/05/2010 'item 1'
2 17/05/2010 'item 2'
3 20/05/2010 'item 3'

Я хочу подтвердить запись:

exec Validate '18/05/2010' 'item 4'

Вернул бы мне: ' элемент 4 ', потому что запись действительна, и хотя данные не были зафиксированы, она возвращает мою новую запись как следующий доступный элемент, потому что он ближайший (в будущем) на сегодня.

exec Validate '24/05/2010' 'item 5'

Должен вернуть мне: ' Пункт 3 '. Дата также действительна, но есть запись раньше, чем новая дата, но позже, чем сегодня.

1 Ответ

1 голос
/ 17 мая 2011

Вероятно, вы можете основывать свои проверки на следующем запросе:

select min(startdate)
from itemstable
where datediff(d, getdate(), startdate)>0
    and datediff(d, startdate, @datetocheck)>=0

Первое предложение проверяет будущие начальные даты, второе предложение проверяет начальные даты до или аналогично предоставленному.

(Возможночто некоторые сравнения неверны - всегда происходит с проблемами с датами:))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...