开始日期: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
--也可以自己建一个数据辅助表,生产服务器经常见到这种用法