2017-09-18 125 views

回答

3

嘗試以下操作:

SELECT 
    DATEADD(dd, -(DATEPART(dw, yourDateInput)-1), yourDateInput) AS Weekstart 
    ,DATEADD(dd, 7-(DATEPART(dw, yourDateInput)), yourDateInput) As weekEnd; 

需要注意的是:一週的第一天取決於你的SQL Server上的語言設置。

所以如果你有17-23的開始和結束日期,那麼星期天是一週中的第一天。

因此,在這種情況下,您可能需要使用:

SET DATEFIRST 1; 

要設置星期一是一週的第一天。

enter image description here

0

嘗試運行下面的查詢,它會給你你想要的一切:)

DECLARE @b DATE = '20170918' --put your date here 

DECLARE @a DATE 


Print('First day of Current Week:') 
set @a = dateadd(ww, Datediff(ww,0,@b),0) 
Print(@a) 
Print('') 

Print('Last day of Current Week:') 
set @a = dateadd(ww, Datediff(ww,0,@b)+1,-1) 
Print(@a) 
Print('') 

--additional queries 
SET @a =dateadd(mm, Datediff(mm,0,@b),0) 
Print('First day of Current Month:') 
Print(@a) 
Print('') 

set @a = dateadd(mm, Datediff(mm,0,@b)+1,-1) 
Print('Last day of Current Month:') 
Print(@a) 
Print('') 

Print('First day of Last Month:') 
set @a = dateadd(mm, Datediff(mm,0,@b)-1,0) 
Print(@a) 
Print('') 

Print('Last day of Last Month:') 
set @a = dateadd(mm, Datediff(mm,0,@b),-1) 
Print(@a) 
Print('') 


Print('First day of Last Week:') 
set @a = dateadd(ww, Datediff(ww,0,@b)-1,0) 
Print(@a) 
Print('') 

Print('Last day of Last Week:') 
set @a = dateadd(ww, Datediff(ww,0,@b),-1) 
Print(@a) 
相關問題