Here is one way you can do this:DECLARE @startDate DATE = '20001001';DECLARE @endDate DATE = '20131001';;WITH cte AS( SELECT YEAR(@startDate) AS FiscalYear, @StartDate AS FiscalYearStart, DATEADD(dd,-1,DATEADD(yy,1,@StartDate)) AS FiscalYearEnd UNION ALL SELECT FiscalYear+1, DATEADD(yy,1,FiscalYearStart), DATEADD(yy,1,FiscalYearEnd) FROM cte WHERE FiscalYearEnd < @endDate)SELECT FiscalYear, CONVERT( CHAR(10),FiscalYearStart,101) + ' thru ' + CONVERT( CHAR(10),FiscalYearEnd,101) FROM cte ORDER BY FiscalYear;