У меня есть таблица, которую мы используем для нашего финансового года, которая не соответствует традиционному календарю. Я пытаюсь создать столбец, в котором будет храниться фактическая календарная дата 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
Как указано в 1/8/2016 в качестве первого дня недели 2, когда оно должно быть 1/4/2016.
Спасибо!