zoukankan      html  css  js  c++  java
  • 求某段时间内星期几的天数

    /*

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

    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 天

    */

  • 相关阅读:
    lucene学习-创建索引
    ExtJs学习-搭建开发环境
    Struts2上传文件(1)
    使用USBWriter做U盘启动盘后U盘在盘中不显示的解决办法(轉載)
    家里旧电脑装了centos7實踐思路
    win7/win10下装centos7双系统(转载)
    美区google play礼品卡,如何正确充值到美区google play余额,并能购买游戏道具
    excel 2016 打开UTF-8编码CSV文件乱码的问题UTF-8编码CSV文件乱码的问题
    python3 writerow CSV文件多一个空行
    python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 4400: illegal multibyte sequence
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244640.html
Copyright © 2011-2022 走看看