Это зависит от того, как вы причислять вашу неделю номер, к примеру, если мы предположим, что номер недели начинается с понедельника, то мы должны сказать, что 1-я неделя в 2016 году действительно началась в понедельник 28 декабря 2015 года и завершилась в воскресенье 3 января 2016 года. Если это так, как настроены номера вашей недели, вы можете использовать метод ниже
Примеры данных ;
CREATE TABLE #DateTable (WeekNum int, YearNum int)
INSERT INTO #DateTable (WeekNum, YearNum)
VALUES
(1,2016)
,(2,2016)
,(3,2016)
,(4,2016)
,(5,2016)
,(6,2016)
,(7,2016)
Затем мы укажем неделю и год на дату, а затем преобразуем это в месяц;
SELECT
WeekNum
,YearNum
,DATEADD(wk, DATEDIFF(wk, 7, '1/1/' + CONVERT(varchar(4),YearNum)) + (WeekNum-1), 7) AS WeekStart
,DATEPART(mm,DATEADD(wk, DATEDIFF(wk, 7, '1/1/' + CONVERT(varchar(4),YearNum)) + (WeekNum-1), 7)) MonthNum
(Edit: обновлены источник INT)
дает эти результаты;
WeekNum YearNum WeekStart MonthNum
1 2016 2015-12-28 00:00:00.000 12
2 2016 2016-01-04 00:00:00.000 1
3 2016 2016-01-11 00:00:00.000 1
4 2016 2016-01-18 00:00:00.000 1
5 2016 2016-01-25 00:00:00.000 1
6 2016 2016-02-01 00:00:00.000 2
7 2016 2016-02-08 00:00:00.000 2
Какую версию сервера sql вы используете? –
Microsoft SQL Server 2008 – ManiMuthuPandi
Используйте функцию [DateAdd] (https://technet.microsoft.com/en-us/library/ms186819 (v = sql.110) .aspx)! –