Мне нужно рассчитать год, на который назначено время. Например, 29 декабря 2003 года был назначен на неделю один год 2004 года (это, по-моему, для Европы). Вы можете посмотреть на это с этим кодом:SQL Получите «год ISO» для ISO-недели
SELECT DATEPART(isowk, '20141229');
Но теперь мне нужен простой способ, чтобы получить год на этой неделе назначена. То, что я в настоящее время сделать это не так элегантна:
DECLARE @week int, @year int, @date char(8)
--set @date = '20150101'
set @date = '20141229'
SET @week = cast(datepart(isowk, @date) as int)
if @week = 1
begin
if DATEPART(MONTH, @date) = 12
begin
set @year = DATEPART(year, @date) + 1
end
else
begin
set @year = DATEPART(year, @date)
end
end
select @date "DATE", @week "WEEK", @year "YEAR"
Если кто-нибудь знает более элегантный способ, это было бы неплохо :-)
Не забудьте добавить тег вашей конкретной РСУБД, чтобы привлечь нужных людей к вашему вопросу. – nop77svk
Вам также нужно обработать случай, когда неделя 52 тянется в январе (в этом случае ваш недельный год меньше, чем в текущем году). См. Мой ответ ниже. – Dan