Datepart Week Sql(一年有53周)

时间:2016-01-20 17:10:55

标签: sql datepart

我正在计算SQL中特定日期的周数 '2016-01-20'(yyyy-mm-dd)但SQL返回周:4,这是错误的,因为今年第一周开始于'2016-01-04',结果必须是周:3。

我认为问题是因为2015年是53周的一年,任何解决方案?谢谢你,我很抱歉我的英文不好

2 个答案:

答案 0 :(得分:0)

在tSQL中,DATEPART()正在返回基于美国和欧洲大部分地区以及英国的正确数据。请参阅here

但是,您可以使用SET DATEFIRST调整起始位置。

答案 1 :(得分:0)

第01周的ISO 8601定义是其中第一个星期四的一周。我正在使用Intersystems缓存,显然也没有考虑到这一点。所以我用这个来解决这个问题

CASE WHEN 7-datepart(dw,dateadd(dd,1,dateadd(yy,datediff(yy,0,getdate())-1,0))) < 2 
THEN datepart(wk,getdate())-1 ELSE datepart(wk,getdate()) END as WeekNum