从日期范围获取特定日期

时间:2014-06-26 12:42:16

标签: sql sql-server sql-server-2008

如何从日期范围中获取一天?

例如: - 如果假设我的日期范围是2014年6月22日到2014年6月28日那么我想得到这个日期范围的星期一,即23/6月/ 2014年为星期一

3 个答案:

答案 0 :(得分:1)

好的,我让这个为我工作。

declare @DateFrom DateTime = CONVERT(DATETIME, '22/06/2014', 103) 
declare @DateTo DateTime = CONVERT(DATETIME, '28/06/2014', 103) 
;WITH CTE(dt) 
AS 
( 
Select @DateFrom 
Union All 
Select DATEADD(d,1,dt)FROM CTE 
Where dt<@DateTo 
) 

select *,'Monday' as [Day] from cte where datename(dw,dt) = 'Monday'

答案 1 :(得分:0)

Select date  
from table 
where date between range1 and range2 
and datename(mm,date) = 'Monday'  

答案 2 :(得分:0)

SELECT MondayAfterRangeStart
FROM table
     CROSS APPLY (
         SELECT DATEADD(DAY, ((DATEDIFF(DAY, 0, RangeStart) - 1)  / 7) * 7 + 7, 0) AS MondayAfterRangeStart
     ) AS CA1 
WHERE MondayAfterRangeStart <= RangeEnd