Eric,
Thanks for taking the time to share this code with us. Very handy. I am confused though with the New Years Day computations. You have these 2 lines:
when 1 then DateAdd(d, 1,@sYear+'-'+'01'+'-'+'01')
when 7 then DateAdd(d, 3,@sYear+'-'+'01'+'-'+'01')
So if New Years Day falls on a Sunday (as in 2017) you add 1 day and it is celebrated on Monday. But if it falls on a Saturday (as in 2011) you add 3 days and it is celebrated on Tuesday. Wouldn't you just add 2 so it is celebrated on Monday?
Thanks again.
Lee