2016-06-13 50 views
2

我想输入一个日期并让它返回该星期一,但在我的公司,星期一从星期一开始到星期日结束。我尝试使用SET DATEFIRST 1将星期一定为一周的第一天,但​​这对周日并没有帮助。SQL:返回星期一不工作在星期日

代码:

DECLARE @proddate datetime = '6/12/2016' 
SET DATEFIRST 1; SELECT DATEADD(wk, DATEDIFF(wk,0,@proddate), 0) MondayOfWeek 

回报:

6/9/2016 -> 6/6/2016 
6/12/2016 -> 6/13/2016 (should be 6/6/2016) 

回答

1

试试这个:

SELECT DATEADD(DAY, 1-DATEPART(WEEKDAY, @proddate), @proddate) 
+0

这工作,我已经在我的代码来实现它。顺便说一句,你碰巧知道我的原代码有什么问题吗? – whatwhatwhat

+0

您的代码对于正常使用非常有用,这种方式对DATEFIRST语句更为敏感。 TBH我通常会自己使用你的原始代码.. – Mack

+1

有一个很好的答案[这里](http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server)解释为什么这个工作。 – Mack

相关问题