Sql server 从日期获取年中的周数

Sql server 从日期获取年中的周数,sql-server,tsql,Sql Server,Tsql,我正在寻找一个查询,它将返回给定日期的星期数 我已经尝试过的是: select datepart(wk, '2017-02-01') 但这会返回5而不是6。(2月1日是一年中的第六周) (周数加红色) 您可能需要指定一周的第一天: 返回6 根据默认语言,您的datefirst可能设置为7 set datefirst 7; select datepart(week, '2017-02-01'); 返回5 ReXTeaDemo:,您也可以考虑在“DATEPATH”中使用“ISON1”而不是“星

我正在寻找一个查询,它将返回给定日期的星期数

我已经尝试过的是:

select datepart(wk, '2017-02-01')
但这会返回5而不是6。(2月1日是一年中的第六周)

(周数加红色)


您可能需要指定一周的第一天:

返回
6


根据默认语言,您的
datefirst
可能设置为
7

set datefirst 7;
select datepart(week, '2017-02-01');
返回
5


ReXTeaDemo:

,您也可以考虑在“DATEPATH”中使用“ISON1”而不是“星期”参数。在这种情况下,您可以避免使用“set datefirst 1”,如果您只能使用一个select,则使用“set datefirst 1”会很方便

有关“iso_周”的更多详细信息:

您可以这样比较这两者:

SELECT datepart(ISO_WEEK, '2020.01.01') -- Wed
SELECT datepart(WEEK, '2020.01.01') -- Wed
SELECT datepart(ISO_WEEK, '2020.01.05') -- Sun
SELECT datepart(WEEK, '2020.01.05') -- Sun
SELECT datepart(ISO_WEEK, '2020.01.06') -- Mon
SELECT datepart(WEEK, '2020.01.06') -- Mon
请注意2020年1月5日星期日的差异:

-----------
1
1
1
2
2
2

你需要定义“一年中的一周”是什么意思。显而易见的答案就是在
datepart()
返回的值上加1。有人想知道是什么吗
-----------
1
1
1
2
2
2