The code to find the first Monday of the year is fairly simple:
First find the 7th day of the year (Jan 7):
dateadd(yy,datediff(yy,0,a.DT),6)
and then find the Monday on or before that date:
dateadd(dd,(datediff(dd,0, JanuarySeventh )/7)*7,0)
Does not depend on any setting of language or datefirst.
select
DT,
FirstMonday =
dateadd(dd,(datediff(dd,0,dateadd(yy,datediff(yy,0,a.DT),6))/7)*7,0)
from
( -- Test Data
select DT = getdate()union all
select DT = '20111231'union all
select DT = '20121231'union all
select DT = '20131231'union all
select DT = '20141231'union all
select DT = '20110101'union all
select DT = '20080229'
) a
Results:
DT FirstMonday
------------------------ -----------------------
2011-08-19 14:42:26.310 2011-01-03 00:00:00.000
2011-12-31 00:00:00.000 2011-01-03 00:00:00.000
2012-12-31 00:00:00.000 2012-01-02 00:00:00.000
2013-12-31 00:00:00.000 2013-01-07 00:00:00.000
2014-12-31 00:00:00.000 2014-01-06 00:00:00.000
2011-01-01 00:00:00.000 2011-01-03 00:00:00.000
2008-02-29 00:00:00.000 2008-01-07 00:00:00.000