if object_id('f_test')is not null drop function f_test
go
create function f_test(@s datetime,@e datetime,@c int)
returns @t table(检查项目 varchar(10),周期序号 int identity,开始 datetime,结束 datetime)
as
begin
declare @d datetime,@i int
set @i=1
while dateadd(month,@i*@c,@s)-1<=@e
begin
insert @t select 'A1',dateadd(month,(@i-1)*@c,@s),dateadd(month,@i*@c,@s)-1
set @i=@i+1
end
if dateadd(month,(@i-1)*@c,@s)<@e
insert @t select 'A1',dateadd(month,(@i-1)*@c,@s),@e
return
end
go
--
declare @s datetime,@e datetime,@i int
set @s='2010-01-20'
set @e='2010-10-19'
set @i=1
select 检查项目,周期序号,convert(varchar(10),开始,120) 开始, convert(varchar(10),结束,120)结束 from f_test(@s,@e,@i)
/*
检查项目 周期序号 开始 结束
---------- ----------- ---------- ----------
A1 1 2010-01-20 2010-02-19
A1 2 2010-02-20 2010-03-19
A1 3 2010-03-20 2010-04-19
A1 4 2010-04-20 2010-05-19
A1 5 2010-05-20 2010-06-19
A1 6 2010-06-20 2010-07-19
A1 7 2010-07-20 2010-08-19
A1 8 2010-08-20 2010-09-19
A1 9 2010-09-20 2010-10-19