Sql server T-SQL从数字中获取每周第一天

Sql server T-SQL从数字中获取每周第一天,sql-server,tsql,calendar,datepart,Sql Server,Tsql,Calendar,Datepart,我有一张我们会计年度使用的桌子,它与传统日历不匹配。我试图完成的是创建一个列,在给定周数的情况下,该列保留一周第一天的实际SQL日历日期 例如: Fiscal Year Fiscal Date Fiscal Week Calendar Date 2016 1/1/2016 1 1/1/2016 2016 1/2/2016 1 1/1/2016 2

我有一张我们会计年度使用的桌子,它与传统日历不匹配。我试图完成的是创建一个列,在给定周数的情况下,该列保留一周第一天的实际SQL日历日期

例如:

Fiscal Year     Fiscal Date     Fiscal Week     Calendar Date
2016            1/1/2016        1               1/1/2016
2016            1/2/2016        1               1/1/2016
2016            1/3/2016        1               1/1/2016
2016            1/4/2016        1               1/1/2016
2016            1/5/2016        1               1/1/2016
2016            1/6/2017        1               1/1/2016
2016            1/7/2017        1               1/1/2016
2016            1/8/2017        1               1/1/2016
2016            1/9/2017        2               1/4/2016
我试图使用以下内容,但我想提供相反的内容:

set datefirst 1;
select datepart(week, '2016-01-01');
相反:

set datefirst 1;
select datepart(week=1, What is the First Day of week 1)
select datepart(week=2, What is the First Day of week 2)
我尝试使用另一个线程中的以下代码,但它没有提供一周中正确的第一天:

set datefirst 1;

Declare @week integer  = 2
Declare @Year Integer  = 2016
declare @date datetime


set @date = Dateadd(week, @week-1, DateAdd(day, 0, 
        DateAdd(month, 0, 
        DateAdd(Year, @Year-1900, 0))))

select @date startweek, DATEADD (D, -1 * DatePart (DW, @date) + 7, @date) endweek
因为它规定2016年8月1日为第2周的第一天,而这一天应为2016年4月1日


谢谢

我认为你可以省去一些头痛,只需创建一个包含所有可能需要的选项的应用程序。Aaron已经为您完成了大部分工作:)我们已经有了一个日历表,我们只是想找到一种方法,将基于sql日历的第一个日历日期添加到此表中。我想我可以创建一个临时表,然后为每个记录插入该临时表的行,但我认为应该有一些方法来查询它。
Declare @week integer  = 2
Declare @Year Integer  = 2016
declare @date datetime

set @date = Dateadd(week, @week-1, DateAdd(day, 0, DateAdd(month, 0, DateAdd(Year, @Year-1900, 0))))
set @date = dateadd(day, 2 - datepart(dw, @date), @date)

select @date startweek, DATEADD (D, -1 * DatePart (DW, @date) + 7, @date) endweek