DATEPART(ww,Date) 与 SET DATEFIRST

DATEPART(ww,Date) with SET DATEFIRST

我正在使用 SQL Server 2005

我正在尝试使用 DatePart(ww,date) 函数获取星期

我的代码

SELECT datepart(ww,'2012-01-08 00:00:00')

Return 2

但是我想要...

Return 1

根据 IS0-8601 和此 table 来自此 website

2012 年 Week-01 从2012-1-2到2012-1-8 ...

我错了吗?

SET DATEFIRST 1有什么技巧,我试了没有成功。

感谢您的宝贵时间

我不能使用 ISO_WEEK,因为 SQL Server 2005 不工作

使用ISO_WEEK:

SELECT datepart(ISO_WEEK,'2012-01-08 00:00:00')

您可以在 MSDN 上阅读更多相关信息。

编辑:

我没有意识到 ISO_WEEK 在 SQL Server 2005 中不可用。由于它基于星期四,因此问题现在转移到从给定日期查找星期四:

DECLARE @Date date = '2012-01-08'
DECLARE @Thursday date = DATEADD(DAY, 3-(DATEPART(WEEKDAY, @Date) + @@DATEFIRST - 2) % 7, @Date)

SELECT (DATEPART(DAYOFYEAR,@Thursday) - 1) / 7 +1