последний случай даты - PullRequest
0 голосов
/ 23 мая 2011

Мне нужно найти последнее вхождение даты (в моем случае статическая дата 1 мая)

Я сделал это, что работает, но я знаю, что это можно сделать намного умнее

declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
    SET @lastmay = DATEADD(YY,-1,@lastmay)
END

1 Ответ

0 голосов
/ 24 мая 2011

Когда вы работаете с датами в SQL, может оказаться реальной помощью иметь в вашей базе данных таблицу утилит Dates, с которой вы сможете сравнить.

В этой статье это хорошо обсуждается: http://www.techrepublic.com/blog/datacenter/simplify-sql-server-2005-queries-with-a-dates-table/326

Если вы реализовали, что ваши запросы могут стать довольно простыми, например (с использованием столбцов из статьи)

Declare @lastmay date

Select @lastmay = DateFull 
from DateLookup
    where MonthNumber = 5
    and MonthDay = 1
    and Datefull < getdate()
...