declare @dt DATETIME
set @dt= '2009-3-12';
WITH Liang AS
(
SELECT dt=DATEADD(day,-DATEPART(day,@dt)+1,@dt),MONTH(@dt) AS m
UNION ALL
SELECT DATEADD(day,1,dt),m
FROM Liang
WHERE MONTH(DATEADD(day,1,dt))=m
)
select * from liang
declare @dt DATETIME
set @dt= '2009-3-12';
WITH Liang AS
(
SELECT dt=DATEADD(day,-DATEPART(day,@dt)+1,@dt),MONTH(@dt) AS m
UNION ALL
SELECT DATEADD(day,1,dt),m
FROM Liang
WHERE MONTH(DATEADD(day,1,dt))=m
)
select * from liang