2014-01-24 107 views
4

如何獲得一週中的第一天和每週的最後一天,當我們輸入任何一天的一天?如何在sql server 2008中獲得本週的第一天以及本週的最後一天?

例如,如果我們輸入一個日期,那麼第一(星期一)和最後一個(星期五)日應顯示。 即如果我們輸入24-jan-2014,那麼應該顯示20-jan-2014和24-jan-2014。

問候

+0

也許這Q能夠能幫你:http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server – Amber

+0

這一個:http://stackoverflow.com/questions/ 1110998/get-day-in-sql-2005-2008 – Jamiec

+2

25-jan-2014應該返回什麼? – dnoeth

回答

11

這裏是你如何能做到這一點:

DECLARE @yourdate date = getdate() 
Select dateadd(ww, datediff(ww, 0, @yourdate), 0) 
Select dateadd(ww, datediff(ww, 0, @yourdate), 4) 

您設置@yourdate到您想要的日期。第一個SELECT會給你的第一天,第二個SELECT會給你的最後日期

+0

你的4必須改爲7以獲得本週的第7天 – Pierre

+4

@Pierre我認爲他的意思是工作周而不是常規周。雖然如果他的意思是一個普通的星期,你必須將它改爲6來獲得星期天。 – Niklas

+0

是的,我同意你的看法! :) – Pierre

1

試試這個

SELECT DATEADD(wk, DATEDIFF(wk, 6, '5/13/2005'), 6) 
SELECT DATEADD(wk, DATEDIFF(wk, 5, '5/13/2005'), 5) 

(OR)

Declare @Date datetime 
Det @Date = '2012-04-12' 
Delect @Date - DATEPART(dw, @Date) + 1 FirstDateOfWeek, 
     @Date + (7 - DATEPART(dw, @Date)) LastDateOfWeek 
1

這解決了它,還包大約一年結束:

SELECT DATEADD(wk,DATEDIFF(d,0,'01 January 2017')/ 7,0)