根据日期返回周数

时间:2013-09-23 08:25:26

标签: sql sql-server-2008 tsql

我是T-SQL的新手,需要紧急帮助。 我想从给定的日期获得周数。

我知道它有一个内置函数但是返回值并不是我想要的。

例如,通过使用select datepart(wk, '2013-01-07'),它会返回'2'..但实际上它应该返回'1'而不是'2'。

有任何想法如何纠正这个问题?

4 个答案:

答案 0 :(得分:1)

您可以使用dy datepart 说明符获取 dayOfYear 号并将其除以7:

select (datepart(dy, '2013-01-05') - 1) / 7 + 1;

工作DEMO

答案 1 :(得分:0)

试试这个

SELECT DATEPART(WEEK,GETDATE())

答案 2 :(得分:0)

这取决于您定义第一个周的跃点。它总是在同一个工作日开始吗?还是一直在1月1日开始?如果您希望它始终在同一工作日开始,那么使用Set datefirst告诉T-SQL您想要定义的周数是一周的开始。如果你想让它始终在1月1日开始,那么只需使用一年中的一天而不是一周,减去1,整数除以7并加1。

declare @dat DateTime = getdate()
Select Select (datepart(dy, @dat)-1) / 7 + 1

答案 3 :(得分:0)

虽然从记忆中走出来,但我相信一年中第一周的ISO标准是一年中第一个星期四所在的那一周。这可能解释为什么内置函数会给出不同的结果。你需要的。