您可以使用SQL Server 2005
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '09 May 2009',
@EndDate = '20 Aug 2009'
;WITH CTE AS(
SELECT @StartDate StartDate,
DATEADD(MM, 1, CAST('01 ' + DATENAME(mm, @StartDate) +' ' + CAST(DATEPART(yyyy, @StartDate) AS VARCHAR(4)) AS DATETIME)) - 1 EndDate
UNION ALL
SELECT EndDate + 1 StartDate,
CASE WHEN DATEADD(MM, 1, EndDate + 1) - 1 > @EndDate THEN @EndDate ELSE DATEADD(MM, 1, EndDate + 1) - 1 END EndDate
FROM CTE
WHERE EndDate < @EndDate
)
SELECT *
FROM CTE
+1看起來你明白問題的嘗試這樣的事情:) – Andomar 2009-12-04 11:51:16