如何在不创建新数据库对象的情况下生成一系列日期?

时间:2015-04-23 08:07:09

标签: sql-server tsql sql-server-2000

我需要创建一个从2013年4月到现在返回年份和月份的查询,如下所示:

2013  | 4
2013  | 5
2013  | 6
2013  | 7
2013  | 8
....  | .
....  | .
....  | .
2015  | 1
2015  | 2
2015  | 3
2015  | 4

它必须与SQLServer 2000一起使用,我在SE上找到的所有解决方案都只是SQLServer2005 +兼容。

有没有办法用这个(非常)旧的SGBD做到这一点?

如果没有解决方案,我会考虑创建一个数字表,但我发现它并不优雅......

1 个答案:

答案 0 :(得分:0)

declare @Startdate AS DateTime = Dateadd( year,-2,Getdate()) , 
        @EndDate DateTime = Getdate()
Declare @YearTable as Table ( CalYear int , calmonth int)

While @Startdate <= @EndDate 
BEGIN 
    Insert Into @YearTable values(YEAR(@Startdate),MONTH(@Startdate))
    set @Startdate = DateADD(Month,1,@Startdate)
END 

select * from @YearTable