【发布时间】:2015-01-11 14:59:50
【问题描述】:
我需要计算分配给一周的年份。例如,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"
如果有人知道更优雅的方式,那就太好了:-)
【问题讨论】:
-
不要忘记添加特定 RDBMS 的标签,以吸引合适的人回答您的问题。
-
您还需要处理第 52 周延伸到 1 月的情况(在这种情况下,您的周年比当年少一)。请参阅下面的答案。
标签: sql sql-server tsql date