SQL Server 2008: запрос для поиска сегодняшней даты в перекрывающиеся даты
У меня есть таблица выше, где мне нужно, чтобы NoteIndx соответствовал сегодняшней дате. Только для тестирования, предположим, что сегодня 2013/06/02 (июнь 2,2013), и это даст мне две записи с noteindx 93105 и 104044.
Но правильное значение здесь - 104044, так как мне нужно выбрать тот, который имеет самые короткие даты STRTDATE и ENDDATE.
Я пытаюсь с различными запросами sql, но пока не получаю правильный результат.
Может ли кто-нибудь помочь мне с наилучшим возможным запросом, чтобы получить результаты выше?
Благодарю.
1 ответ
Это то, что вы хотите?
select top 1 n.*
from notes n
where cast('2013-06-02' as date) >= strtdate and
cast('2013-06-02' as date) < enddate + 1
order by enddate - strtdate;
Это не использовать between
потому что ваши даты хранятся как datetime
- это всегда дает возможность быть частью времени на дате.
Если вы хотите сегодняшнюю дату, то используйте getdate()
вместо cast('2013-06-02' as date)
,