Часть первая:
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)