从datepart更正周数

时间:2016-01-05 12:29:48

标签: sql-server week-number datepart

代码返回:

set datefirst 1
select datepart(wk,'2016-01-01')  - 1

set datefirst 1
select datepart(wk,'2015-12-31')

返回..53:/

但事实上 - 这是同一周。本周有更多的日子属于2015年,所以它应该是" 53"或" 1" (特定值)此特定周的任何日期。如果没有建立专门的程序来分析日期和调整返回值,是否可以实现这一目标?

我使用SQL Server 2005

1 个答案:

答案 0 :(得分:6)

您可能需要iso_week

set datefirst 1
select datepart(iso_week,'2015-12-31')    --53
select datepart(iso_week,'2016-01-01')    --53

LiveDemo

修改

看起来iso_week支持SQL Server 2008+

  

这可以在没有建立专门程序的情况下实现这一点   分析日期并调整返回值?

可能你需要编写自定义代码来计算它。