declare @bedate datetime,@edate datetime
declare @year int,@month int
declare @years varchar(50),@months varchar(50)
set @bedate='2004-12-01'
set @edate ='2005-03-01' select @year=year(@bedate),@month=month(@bedate)
set @years =rtrim(@year)
set @months=rtrim(@month)while datediff(mm,@bedate,@edate)>0
begin
set @bedate=dateadd(mm,1,@bedate)
if year(@bedate)<>@year
begin
set @year =year(@bedate)
set @years=@years+','+rtrim(@year)
end
set @month =month(@bedate)
set @months=@months+','+rtrim(@month)
endselect @years,@months
declare @year int,@month int
declare @years varchar(50),@months varchar(50)
set @bedate='2004-12-01'
set @edate ='2005-03-01' select @year=year(@bedate),@month=month(@bedate)
set @years =rtrim(@year)
set @months=rtrim(@month)while datediff(mm,@bedate,@edate)>0
begin
set @bedate=dateadd(mm,1,@bedate)
if year(@bedate)<>@year
begin
set @year =year(@bedate)
set @years=@years+','+rtrim(@year)
end
set @month =month(@bedate)
set @months=@months+','+rtrim(@month)
endselect @years,@months
set @edate='2005-03-01' declare @year table(a int)
declare @month table(a int)
declare @i int,@n int,@bemonth int,@beyear int,@mm int
set @mm=0
set @i=datediff(m,@bedate,@edate)
set @n=datediff(yy,@bedate,@edate)
select @bemonth=month(@bedate),@beyear=year(@bedate)
insert @year select @beyear
insert @month select @bemonth
while(@i>0)
begin
set @mm=@bemonth+1
if @mm>12
begin
insert @month select 1
set @bemonth=1
end
else
begin
set @bemonth=@bemonth+1
insert @month select @bemonth
end
set @i=@i-1
endwhile(@n>0)
begin
insert into @year select @beyear+1
set @beyear=@beyear+1
set @n=@n-1
endselect * from @year
select * from @month
set @bedate ='2004-12-01'
declare @edate datetime
set @edate='2005-03-01'
declare @i int
set @i = datediff(yy,@bedate,@edate) + 1set rowcount @i
select rowid = identity(int,0,1) into #tmp from sysobjects a ,sysobjects bset @i = datediff(mm,@bedate,@edate) + 1
set rowcount @i
select rowid = identity(int,0,1) into #tmp1 from sysobjects a ,sysobjects b
declare @line1 varchar(1000)
set @line1 = ''
select @line1 = @line1+','+ convert(varchar(4),datepart(yy,@bedate)+rowid) from #tmp
select @line1 = right(@line1,len(@line1)-1)
declare @line2 varchar(1000)
set @line2 = ''
select @line2 = @line2+','+ convert(varchar(2),datepart(mm,dateadd(mm,rowid,@bedate))) from #tmp1
select @line2 = right(@line2,len(@line2)-1)
select '年份',@line1 union
select '月份:',@line2
drop table #tmp1
drop table #tmp
/*
----- -----------------
年份 2004,2005
月份: 12,1,2,3
*/