Список SQL года с этого года до 5 лет назад, затем используется в качестве параметра в хранимых sproc - PullRequest
0 голосов
/ 08 сентября 2010

Сначала мне нужно создать sproc, который даст мне список лет с этого года до 5 лет до этого года. Я думал о том, чтобы как-то использовать табличную переменную?

После этого мне нужно использовать это значение в качестве параметра в другом sproc. Как бы я тогда сказал показать все даты, которые содержат выбранный год? Я знаю, как написать параметр и все, что мне просто нужно, в части предложения Where.

Дата в столбце примерно такая: 2010/01/30 00: 00.000

1 Ответ

3 голосов
/ 08 сентября 2010

Часть первая:

Declare @Years Table (int year primary Key Not Null)
Declare @Yr integer Set @Yr = Year(getDate())
Declare @tYr Integer Set @tYr = @Yr
while @Yr > @TYr - 5 Begin
   Insert @Years(year) Values (@Yr)
   Set @Yr = @Yr - 1
End

Часть вторая: (я полагаю, вы имеете в виду «Показать все даты, содержащие год в пятилетнем промежутке» ??)

Where Year(dateColumn) In (Select year from @Years)

- Но это не SARGable, поэтому я бы рекомендовал вместо этого

Where dateColumn Between DateAdd(year, Year(getDate())-1905, 0) 
                     And DateAdd(year, Year(getDate())-1899, 0) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...