我是T-SQL的新手,需要紧急帮助。 我想从给定的日期获取周数。根据日期返回周数
据我所知,有一个在它的函数构建,但价值回报不完全是我想要的。
对于例如,通过选择datepart(wk, '2013-01-07')
,它将返回我的“2”。但实际的事实是,它应该返回“1”,而不是“2”。
任何想法如何解决此问题?
我是T-SQL的新手,需要紧急帮助。 我想从给定的日期获取周数。根据日期返回周数
据我所知,有一个在它的函数构建,但价值回报不完全是我想要的。
对于例如,通过选择datepart(wk, '2013-01-07')
,它将返回我的“2”。但实际的事实是,它应该返回“1”,而不是“2”。
任何想法如何解决此问题?
+1是的,我想建议与1月1日,但这一个更好,我认为 –
谢谢马辛!你是我的救世主! –
试试这个
SELECT DATEPART(WEEK,GETDATE())
这取决于你跳定义第一周。它总是在同一个工作日开始吗?或者它是否始终在一月一号开始?如果您希望它始终在同一个工作日内启动,那么请使用Set datefirst
来告诉T-SQL您想要定义为星期几的星期几。如果你想让它总是在1月1日开始,然后只用一年,而不是一周中的一天,7减1,整数除法,并添加1
declare @dat DateTime = getdate()
Select Select (datepart(dy, @dat)-1)/7 + 1
虽然从内存中去,相信对于ISO标准一年的第一周是一年中第一个星期四的一周。这可能解释了为什么内置函数给出的结果与您所需的结果不同。
减去1?..... –
*当datepart是星期(wk,ww)或星期几(dw)时,返回值取决于使用SET DATEFIRST设置的值* –
select datediff(dd, '2013-01-01','2013-01-07')/ 7 –