日期部分周 SQL(一年有 53 周)



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

我认为这个问题是全球性的,因为 2015 年是有 53 周的一年,有什么解决方案吗?谢谢你,我很抱歉我的英语不好

在tSQL中,DATEPART()返回基于美国和欧洲大部分地区以及英国的正确数据 看这里

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

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

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 

最新更新