查找2个日期之间的星期一

Ali*_*ese 3 sql-server sql-server-2008 ssrs-2008

我需要在给定的日期范围内显示所有星期一的日期.

例如,如果我的开始日期是01/05/2015结束日期31/05/2015,那么我需要显示

04/05/2015
11/05/2015
18/05/2015
25/05/2015
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

SQL*_*ice 6

此过程独立于区域和语言.

请注意第一行SET DATEFIRST 1.

SET DATEFIRST 1; -- First day of the week is set to monday

DECLARE @DateFrom DateTime ='20150601', @DateTo DateTime = '20150630' ;

WITH CTE(dt)
AS
(
      SELECT @DateFrom
      UNION ALL
      SELECT DATEADD(d, 1, dt) FROM CTE
      WHERE dt < @DateTo
)
SELECT dt FROM CTE  where datepart ("dw", dt) = 1;
Run Code Online (Sandbox Code Playgroud)