To add on Nigel's post, you enhance the query in the following way:
DECLARE @d1 datetime, @d2 datetime
DECLARE @n int
SELECT
@d1 = '20090831',
@d2 = '20090930',
@n = DATEDIFF(day,@d1,@d2)
SELECT
CAST(DATENAME(dw,date) AS Nvarchar(15)) + ', ' + CASE RIGHT(CAST(DATEPART(dd, date) AS Nvarchar(2)), 1)
WHEN 1 THEN CAST(DATEPART(dd, date) AS Nvarchar(2)) + 'st'
WHEN 2 THEN CAST(DATEPART(dd, date) AS Nvarchar(2)) + 'nd'
WHEN 3 THEN CAST(DATEPART(dd, date) AS Nvarchar(2)) + 'rd'
ELSE
CAST(DATEPART(dd, date) AS Nvarchar(2)) + 'th'
END
FROM
(
SELECT TOP (@n)
date = DATEADD( day,
ROW_NUMBER()OVER (ORDER BY t1.name)-1,
@d1)
FROM
sys.columns t1, sys.columns t2
) d
WHERE DATENAME(dw,date) NOT IN ('Saturday','Sunday')