2012-12-21 149 views
1

我有一個非常簡單的查詢使用日期找到最後一個星期一在SQL 2008

SELECT SUM(Balance) FROM TimeSystem 
WHERE EmployeeNo = @EmployeeNo 
AND RegDate BETWEEN @StartDate AND EndDate 

現在,我一直在考慮分配給創建一個返回的餘額查詢,但只能從同一個星期的星期一作爲@EndDate。

因此,我需要創建一個使用@EndDate的變量,並查找同一周的星期一的日期,然後將它放在一個名爲@Monday的變量中。

我只用了大約3個月的SQL,所以我不確定這是否可以實現?

感謝

回答

3
declare @date datetime 
set @date=GETDATE() 

select DATEADD(wk, DATEDIFF(wk, 0,@date),0) 
+0

你的建議返回** 2012-12-31 00:00:00.000 **這是星期一,但不是在本週。 –

+0

剛剛編輯它,它將返回當前星期一的日期 –

+1

這取決於'SET DATEFIRST'設置。 – ErikE

1

另一種版本,這將使上週日,得到事先星期一:

DECLARE @date DATE 

SET @date = '2017-06-18' -- GETDATE() 

SELECT DATEADD(DAY 
       ,CASE DATEPART(WEEKDAY, @date)WHEN 1 THEN -6 ELSE (DATEPART(WEEKDAY, @date) - 2) * -1 END 
       ,@date 
      ) 
相關問題