2010-09-08 53 views
0

首先,我需要创建一个sproc,它会给我一个从今年到今年之前的5年的列表。我想用某种方式使用表变量?SQL从今年到今年的5年的列表,然后用作存储过程中的参数

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

列的日期都是这样2010/01/30 00:00.000一个

回答

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) 

- 但这不是优化搜索,所以我反而reccomend,

Where dateColumn Between DateAdd(year, Year(getDate())-1905, 0) 
        And DateAdd(year, Year(getDate())-1899, 0)