2013-09-23 62 views
-2

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

据我所知,有一个在它的函数构建,但价值回报不完全是我想要的。

对于例如,通过选择datepart(wk, '2013-01-07'),它将返回我的“2”。但实际的事实是,它应该返回“1”,而不是“2”。

任何想法如何解决此问题?

+0

减去1?..... –

+1

*当datepart是星期(wk,ww)或星期几(dw)时,返回值取决于使用SET DATEFIRST设置的值* –

+0

select datediff(dd, '2013-01-01','2013-01-07')/ 7 –

回答

1

您可以使用dy日期部分符来获得DAYOFYEAR号和7分着喝

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

工作DEMO

+0

+1是的,我想建议与1月1日,但这一个更好,我认为 –

+0

谢谢马辛!你是我的救世主! –

0

试试这个

SELECT DATEPART(WEEK,GETDATE())

0

这取决于你跳定义第一周。它总是在同一个工作日开始吗?或者它是否始终在一月一号开始?如果您希望它始终在同一个工作日内启动,那么请使用Set datefirst来告诉T-SQL您想要定义为星期几的星期几。如果你想让它总是在1月1日开始,然后只用一年,而不是一周中的一天,7减1,整数除法,并添加1

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

虽然从内存中去,相信对于ISO标准一年的第一周是一年中第一个星期四的一周。这可能解释了为什么内置函数给出的结果与您所需的结果不同。