• 求某段时间内星期几的天数


    /*

    **********************************************

    Program ID: FUN_GetDaysOfWeek

    Purpose   : 求某段时间内某一星期日期的天数

    Author    : Jesse

    Date      : 2011.02.19

    **********************************************

    */

    Go

    Create Function dbo.FUN_GetDaysOfWeek(   

    @DateS smalldatetime,--开始时间

    @DateE smalldatetime,--结束

    @WeekValue int)      --星期的某一天:-周日、-周一...7-周六

    Returns nvarchar(100)

    As

    Begin

        declare

            @sResult nvarchar(100),    --结果描述

            @nResult int,              --结果天数

            @nWeekValue int,           --起始日期是星期几(1-周日、-周一...7-周六)

            @nDays int,                --时间段内的天数

            @nBeforeDays int,          --起始日期到第一次相符日期的天数

            @sWeekName varchar(20),    --所求日期的星期名称

            @tmpDate smalldatetime

       

        set @WeekValue=@WeekValue % 7

        if @WeekValue=0

            set @WeekValue=7

     

        --如果起始日期大于终止日期,则对换

        if @DateS>@DateE

            select @tmpDate=@DateE,@DateE=@DateS,@DateS=@tmpDate

     

        --取得起始日期的星期数,与设置无关(1-周日、-周一...7-周六)

        select @nWeekValue=(Datepart(dw,@DateS)+(@@Datefirst %7))%7

        if @nWeekValue=0

            set @nWeekValue=7

       

        set @sWeekName=DateName(dw,DateAdd(d,@WeekValue-@nWeekValue,@DateS))

     

        if @WeekValue>=@nWeekValue

            set @nBeforeDays=@WeekValue-@nWeekValue

        else

            set @nBeforeDays=7-abs(@WeekValue-@nWeekValue)

     

        --取得时间段内的天数

        select @nDays=Datediff(d,@DateS,@DateE)+1

        if @nDays<@nBeforeDays

            select @nResult=0

        else

            select @nResult=ceiling((@nDays-@nBeforeDays)/7.0)

        set @sResult=N'日期区间:'+ convert(varchar(10),@DateS,120)+ N' 到' +convert(varchar(10),@DateE,120) +' 之间'

                    +@sWeekName +N' 共有'+cast(@nResult as varchar(100))+N' 天'

        Return @sResult

    end   

     

    go

    --测试示例

    select dbo.FUN_GetDaysOfWeek('2011-03-01','2011-05-31',1)

     

    --运行结果

    /*

    日期区间:2011-03-01 到2011-05-31 之间Sunday 共有13 天

    */

  • 相关阅读:
    桂林印象
    快变
    近期的事
    *C#中使用ref和out一点认识!*
    *在框架集页面放置TreeView控件时页面跳转的问题解决*
    *无法找到脚本库的问题*
    *Ajax.Net快速入门*
    *网页过期*
    *Prototype开发笔记*
    *正则表达式*
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244640.html
Copyright © 2020-2023  润新知