代码返回:
set datefirst 1 select datepart(wk,'2016-01-01') - 1
但
set datefirst 1 select datepart(wk,'2015-12-31')
return..53:/
但事实上 - 这是同一周.本周有更多的日子属于2015年,所以对于这个特定周的任何日期,它应该是"53"或"1"(相同的值).如果没有建立专门的程序来分析日期和调整返回值,是否可以实现这一目标?
我使用SQL Server 2005
你可能想要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+
.
如果没有建立专门的程序来分析日期和调整返回值,是否可以实现这一目标?
可能你需要编写自定义代码来计算它.