SQL从今年到5年的年份列表,然后用作存储的sproc中的参数

时间:2010-09-08 14:59:41

标签: sql sql-server sql-server-2005

首先,我需要创建一个sproc,它将为我提供从今年到今年之前5年的年份列表。我想以某种方式使用表变量?

之后,我需要将该值用作另一个sproc中的参数。那么我怎么说显示包含被挑选年份的所有日期?我知道如何编写参数以及我只需要Where子句部分的所有内容。

列中的日期类似于2010/01/30 00:00.000

1 个答案:

答案 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)