使用SET DATEFIRST进行DATEPART(ww,日期)

时间:2015-01-03 19:41:33

标签: sql-server sql-server-2005

我正在使用SQL Server 2005

我试图通过DatePart(ww,date)功能获得一周

我的代码

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

返回2

但我想......

返回1

根据IS0-8601以及此website

中的此表

2012年 第01周从2012-1-2到2012-1-8 ...

我错了吗?

SET DATEFIRST 1有任何技巧,我尝试没有成功。

感谢您的时间

我无法使用ISO_WEEK,因为SQL Server 2005无法正常工作

enter image description here

1 个答案:

答案 0 :(得分:1)

使用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