How to split date ranges based on months in SQL Server 2005
问题 Ex: date range is 01-01-2011 to 01-01-2012 , I want the output like this : 01-01-2011 31-01-2011 01-02-2011 28-02-2011 How can I do this ? I'm using SQL Server 2005.. Thanks 回答1: Using CTE: DECLARE @Begin DATETIME DECLARE @End DATETIME SELECT @Begin = '20110101', @End = '20120101' ;WITH ranges(DateFrom, DateTo) AS ( SELECT @Begin, DATEADD(DAY, -1, DATEADD(MONTH, 1, @begin)) UNION ALL SELECT DATEADD(month, 1, DateFrom), DATEADD(DAY, -1, DATEADD(MONTH, 2, DateFrom)) FROM ranges WHERE DateFrom <