我需要计算一周分配到的年份。例如,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"
如果有人知道更优雅的方式,那就太好了:-)
最佳答案
此解决方案问题中的代码未返回日期'1-1-2027'
的正确值。
以下内容将返回我测试的所有日期的正确值(我测试了相当多的日期)。
SELECT YEAR(DATEADD(day, 26 - DATEPART(isoww, '2012-01-01'), '2012-01-01'))
关于SQL 获取 ISO 周的 "ISO Year",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926271/