日期:2014-05-18 浏览次数:20558 次
declare @d1 datetime,@d2 datetime
set @d1='2009-03-01'
set @d2='2010-01-01'
;
with cte(d,d1) as(
select convert(varchar(2),datepart(mm,@d1)) as d,@d1 as d1
union all
select convert(varchar(2),datepart(mm,dateadd(mm,1,a.d1))) as d, dateadd(mm,1,a.d1) as d1
from cte a
where convert(varchar(7),a.d1,120)<convert(varchar(7),@d2,120)
)select * from cte
/*
d d1
---- -----------------------
3 2009-03-01 00:00:00.000
4 2009-04-01 00:00:00.000
5 2009-05-01 00:00:00.000
6 2009-06-01 00:00:00.000
7 2009-07-01 00:00:00.000
8 2009-08-01 00:00:00.000
9 2009-09-01 00:00:00.000
10 2009-10-01 00:00:00.000
11 2009-11-01 00:00:00.000
12 2009-12-01 00:00:00.000
1 2010-01-01 00:00:00.000
(11 行受影响)
*/