如何让SQL生成这样一个关于时间的列?

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:55:37
我的两个参数为@yyyymm_s,@yyyymm_e,分别为200705和200805,那么我要这个列的的输出结果结果为:
200705
200706
200707
200709
200710
200711
200712
200801
200802
200803
200804
200805

请各位GGJJ给我解决方法 getdate()+7或是-7可以直接获取星期,但是我只要月,我部知道该怎么办。。。

declare @yyyymm_s nvarchar(10) ,@yyyymm_e nvarchar(10)

select @yyyymm_s=200705,@yyyymm_e=200805

declare @s smalldatetime,@e smalldatetime,@x smalldatetime

select @s = left(@yyyymm_s,4) +'-' + right(@yyyymm_s,2) +'-1',
@e = left(@yyyymm_e,4) +'-' + right(@yyyymm_e,2) +'-1' ,
@x = @s

declare @tb table(x int)

while @x<=@e
begin
insert into @tb (x) values(left(replace(convert(nvarchar(7),@x,120),'-',''),6))
set @x= dateadd(m,1,@x)
end

select * from @tb

我看像火星文一样
可以HI我仔细描述一下你的要求

MSSQL有增加月份的函数,如:当前日期增加一个月
dateadd(month,1,getdate())
通过循环,控制中间的增减数量,很容易就实现了