2012-12-21 105 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 
      ) 
相关问题