This is the solution :
DECLARE @startDate date , @endDate date;
SET @startDate = '2015-01-01'
SET @endDate = '2015-12-31'
;with cte(dt) as
(
select cast(@startDate as datetime)
union all
select dt + 1
from cte
where dt < @endDate
)
SELECT
'Week '+CAST(ROW_NUMBER () OVER (ORDER BY start_of_week) AS VARCHAR(20)) + ': ' +
REPLACE(CONVERT(NVARCHAR,CAST(start_of_week AS DATETIME), 106), ' ', '-') + ' ' +
REPLACE(CONVERT(NVARCHAR,DATEADD(day, 6, start_of_week), 106), ' ', '-')
FROM cte
CROSS APPLY ( VALUES( DATEPART(weekday, DATEADD(day, @@DATEFIRST -1, dt)) - 1 ) ) AS A1(dist)
CROSS APPLY ( VALUES( DATEADD(day, -dist, dt) ) ) AS A2(start_of_week)
GROUP BY start_of_week
option (maxrecursion 0)