我正在计算SQL中特定日期的周数
'2016-01-20'(yyyy-mm-dd
)但SQL返回周:4,这是错误的,因为今年第一周开始于'2016-01-04',结果必须是周:3。
我认为问题是因为2015年是53周的一年,任何解决方案?谢谢你,我很抱歉我的英文不好
答案 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