当前位置: 代码迷 >> Sql Server >> 请问一个查询两个日期之间所有星期X的sql语句写法
  详细解决方案

请问一个查询两个日期之间所有星期X的sql语句写法

热度:62   发布时间:2016-04-24 09:05:27.0
请教一个查询两个日期之间所有星期X的sql语句写法?
开始日期:2015-04-12  结束日期:2016-7-14

现在想用SQL语句或存储过程 实现能够显示这两个日期之间的所有星期一、星期日的日期。

请高手指教下
------解决思路----------------------
declare @startDate date = '12.04.2015'
declare @endDate date = '14.07.2016'
declare @day int

declare @t table
(
ResultDate Date
)

declare @tempDate date = @startDate

while @tempDate <= @endDate
begin
set @day = (select DATEPART(WeekDay, @tempDate))

  if(@day = 1
or @day = 7)
INSERT into @t select @tempDate

set @tempDate = DATEADD(day,1,@tempDate)

end

select * from @t
------解决思路----------------------
SET DATEFIRST 7
DECLARE @StartDate DATETIME,@EndDate DATETIME
SET @StartDate='2015-04-12'
SET @EndDate='2016-7-14'
SET @StartDate=DATEADD(DAY,1-DATEPART(WEEKDAY,@StartDate),@StartDate)
SELECT DATEADD(DAY,number,@StartDate),number%7
FROM master..spt_values
WHERE type='P'AND number<=DATEDIFF(DAY,@StartDate,@EndDate)
AND number%7 IN (0,1)
--6 7年以内的可以直接连接 master..spt_values
--也可以自己建一个数据辅助表,生产服务器经常见到这种用法
  相关解决方案