首先,我需要创建一个sproc,它将为我提供从今年到今年之前5年的年份列表。我想以某种方式使用表变量?
之后,我需要将该值用作另一个sproc中的参数。那么我怎么说显示包含被挑选年份的所有日期?我知道如何编写参数以及我只需要Where子句部分的所有内容。
列中的日期类似于2010/01/30 00:00.000
答案 0 :(得分:3)
第一部分:
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)