`
lengyue_dick
  • 浏览: 82806 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

SQL 计算在一段时间内某周几(如星期一)的所有日期

阅读更多
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics