Взгляните на что-то вроде
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '01 Jan 2010',
@EndDate = '01 Jan 2011'
;WITH Dates AS (
SELECT @StartDate StartOfMonth
UNION ALL
SELECT DATEADD(month,1,StartOfMonth) StartOfMonth
FROM Dates
WHERE DATEADD(month,1,StartOfMonth) <= @EndDate
)
SELECT *
FROM Dates
ВЫХОД
StartOfMonth
-----------------------
2010-01-01 00:00:00.000
2010-02-01 00:00:00.000
2010-03-01 00:00:00.000
2010-04-01 00:00:00.000
2010-05-01 00:00:00.000
2010-06-01 00:00:00.000
2010-07-01 00:00:00.000
2010-08-01 00:00:00.000
2010-09-01 00:00:00.000
2010-10-01 00:00:00.000
2010-11-01 00:00:00.000
2010-12-01 00:00:00.000
2011-01-01 00:00:00.000
РЕДАКТИРОВАТЬ
С указанным именем столбца
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '01 Jan 2010',
@EndDate = '01 Jan 2011'
;WITH Dates (dt) AS (
SELECT @StartDate dt
UNION ALL
SELECT DATEADD(month,1,dt) dt
FROM Dates
WHERE DATEADD(month,1,dt) <= @EndDate
)
SELECT *
FROM Dates