我需要计算一周分配给的年份。例如,将2003年12月29日指定为2004年的第一周(我认为这仅适用于欧洲)。您可以使用以下代码查看一下:
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"
如果有人知道更优雅的方式,那将是很好的:-)
该解决方案没有为date返回正确的值'1-1-2027'。
'1-1-2027'
以下内容将返回我测试过的所有日期(以及测试了很多时间)的正确值。
SELECT YEAR(DATEADD(day, 26 - DATEPART(isoww, '2012-01-01'), '2012-01-01'))
摘自:https : //capens.net/content/sql-year-iso-week