There is a lot of ways to do this (some more efficient than others). Here's one of them:declare @dt_in datetimeset @dt_in = getdate()select dtfrom ( select dateadd(day, n, dateAdd(month, datediff(month,0,@dt_in),0)) dt from ( select n1+n2+n3+n4+n5 n from (select 0 n1 union select 1) n1 cross join (select 0 n2 union select 2) n2 cross join (select 0 n3 union select 4) n3 cross join (select 0 n4 union select 8) n4 cross join (select 0 n5 union select 16) n5 --order by 1 ) a ) awhere dateName(weekday,dt) = 'Saturday'and datediff(month, dt, @dt_in) = 0order by dt
Be One with the OptimizerTG