Получить из год_неделя дату

Scend
Дата: 20.04.2015 09:54:41
Здравствуйте!
Подскажите, как можно из стринга такого формата:
'201452'
, где первые четыре цифры - это год, оставшиеся две - это номер недели года, получить datetime первого дня недели:

К примеру из
'201452' получить datetime '2014-12-22 00:00:00.000'

из
'201508' получить datetime '2015-02-16 00:00:00.000'

Не получается разложить неделю года на деньмесяц.
Glory
Дата: 20.04.2015 09:58:08
к дате начала года прибавьте ваше число недель
iap
Дата: 20.04.2015 10:01:23
Scend,

Номер недели может определяться по-разному.
Уточните.
И как определяется первый день недели?
Scend
Дата: 20.04.2015 10:11:41
iap
Scend,

Номер недели может определяться по-разному.
Уточните.
И как определяется первый день недели?

Номер недели по стандартному производственному календарю.
Первый день - понедельник. А первая неполная не с понедельника неделя года - с первого числа этой недели.
iap
Дата: 20.04.2015 10:25:17
Scend
Номер недели по стандартному производственному календарю
Не понимаю, я должен сейчас лезть искать ссылку на "стандартный производственных календарь".
Имеется стандарт нумерации недель - ISO 8601. Но это непохоже на Ваше описание.

https://msdn.microsoft.com/ru-ru/library/ms174420(v=sql.120).aspx

Правильно ли я понимаю, что если 1 января - воскресенье, то 2 января - это уже вторая неделя?
Scend
Дата: 20.04.2015 10:32:52
iap
Правильно ли я понимаю, что если 1 января - воскресенье, то 2 января - это уже вторая неделя?

Да.
o-o
Дата: 20.04.2015 10:35:40
все правильно, ТС хочет ISO_WEEK.
у меня имеется календарь с датой и просчитанными ISO_WEEK (Calendar.wk),
поэтому для меня решение выглядит так:
declare @t table (dt char(6));
insert into @t values ('201452'), ('201508')

select t.dt, MIN(c.dt)
from dbo.Calendar c join @t t
		on c.dt >= LEFT(t.dt, 4) and c.dt < DATEADD(YY, 1, LEFT(t.dt, 4))
		and wk = cast(right(t.dt, 2) as int)
group by t.dt	
---
201452	2014-12-22
201508	2015-02-16	

ТС-у могу предложить добавить в свой календарь колонку вида YYYYwk,
где wk = ISO_WEEK
iap
Дата: 20.04.2015 10:44:54
o-o
все правильно, ТС хочет ISO_WEEK
Судя по ответу на мой вопрос - нет!

Scend, версия сервера какая? Выполните PRINT @@VERSION.

DECLARE @S VARCHAR(100)='201452';
SELECT DATEADD(WEEK,RIGHT(@S,2)+DATEDIFF(DAY,0,LEFT(@S,4))/7-1,0);
o-o
Дата: 20.04.2015 10:54:13
ну, у меня посчитаны именно ISO_WEEK, + ответ сходится.
а если прибавлять просто недели по совету Глори,
то ответ не тот.
если у нас с ТС сходятся первые дни недели, то спасибо, сходится и полностью неделя,
а значит, ему надо именно ISO_WEEK.
iap
Дата: 20.04.2015 11:10:00
o-o
ну, у меня посчитаны именно ISO_WEEK, + ответ сходится.
а если прибавлять просто недели по совету Глори,
то ответ не тот.
если у нас с ТС сходятся первые дни недели, то спасибо, сходится и полностью неделя,
а значит, ему надо именно ISO_WEEK.
Вот, я как-то пытался собрать все факты про ISO 8601:
Формат ДАТЫ в SQL.

Первая неделя по этому стандарту - это та, которой принадлежит 4 января!