SQL 计算在一段时间内某周几(如星期一)的所有日期
2008-08-27 04:05 P.M.
设计方法:先提取第1个星期一,然后就是循环+7。难点就是怎么样提取第1个星期一。 /* 功能: 计算在某一段时间内某周几(如星期一)的所有日期 设计:OK_008 时间:2006-10 */ DECLARE @Date datetime DECLARE @StartDate datetime DECLARE @EndDate datetime DECLARE @WeekDay int DECLARE @i int SET DATEFIRST 7 --设置每周的第一天 SET @StartDate='2006-01-01' --统计的开始日期 SET @EndDate='2006-12-31' --统计的结束日期 SET @WeekDay=2 --根据实际的@@DATEFIRST而定,一般默认是7,如 @StartDate='2006-01-01'时候, @WeekDay=3表示星期二 SET @i=DATEPART(weekday,@StartDate) PRINT '每周的第1天设置@@DATEFIRST: '+CAST(@@DATEFIRST AS nvarchar(1)) PRINT '开始日期对应一周的第几天: '+CAST(@i AS nvarchar(1)) IF(@i<=@WeekDay AND @i<7) SET @i=@WeekDay-@i ELSE IF(@i<=@WeekDay AND @i=7) SET @i=@i-@WeekDay ELSE SET @i=@@DATEFIRST-@i+@WeekDay SET @Date=DATEADD(day,@i,@StartDate) WHILE @Date<=@EndDate BEGIN IF(@StartDate<=@Date) PRINT CONVERT(nvarchar(10),@Date,121) SET @Date=DATEADD(Week,1,@Date) END GO /* ==============运行结果================*/ /* 每周的第1天设置@@DATEFIRST: 7 开始日期对应一周的第几天: 1 2006-01-02 2006-01-09 ... ... 2006-12-18 2006-12-25 |