Thanks for tip, Jeff.
OK, here are 2 additional (and hopefully lest costly) queries to the get the days for a specific month.
I don't have any experience with the SQL Profiler, so I'm still trying to figure that one out so I can compare like you did in the article.
SELECT --===== Classic Cross-Join
TOP (day( DATEADD( s, -1, DATEADD( mm, DATEDIFF( m, 0,
CAST(@yearnum + '-' + @monthnum + '-01' AS datetime))+1,0))))
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as daynum2
FROM sys.all_columns ac1
CROSS JOIN sys.all_Columns ac2
;
WITH --===== Itzik-style Cross-Join
E1(N) AS (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
), -- 1*10^1 or 10 rows
E2(N) AS (SELECT 1 FROM E1 a, E1 b) -- 1*10^2 or 100 rows
SELECT TOP (
day( DATEADD( s, -1, DATEADD( mm, DATEDIFF( m, 0,
CAST(@yearnum + '-' + @monthnum + '-01' AS datetime))+1,0)))
) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as daynum3 FROM E2
;