• 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

    ;