zoukankan      html  css  js  c++  java
  • 计算两个日期之间的工作日

    Go

    --创建函数(CSDN fredrickhu(小F)提供)

    CREATE FUNCTION f_WorkDay

    (

        @dt_begin   datetime,     --计算的开始日期

        @dt_end     datetime      --计算的结束日期

    )RETURNS   int

    AS

    BEGIN

        DECLARE @workday int,@i int,@bz bit,@dt datetime

        IF @dt_begin> @dt_end

           SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt

        ELSE

           SET @bz=0

        SELECT @i=DATEDIFF(Day,@dt_begin,@dt_end)+1, @workday=@i/7*5,

               @dt_begin=DATEADD(Day,@i/7*7,@dt_begin)

        WHILE  @dt_begin <=@dt_end

        BEGIN

           SELECT   @workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@dt_begin)-1)%7  

           BETWEEN 1 AND 5 THEN @workday+1 ELSE @workday END,

                                @dt_begin=@dt_begin+1

        END

        RETURN(CASE WHEN @bz=1 THEN -@workday ELSE @workday END)

    END

     

    GO

    --测试示例

    select dbo.f_WorkDay('2011-02-22','2011-03-14') as '工作日'

     

    --运行结果

    /*

    工作日

    -----------

    15

    */

  • 相关阅读:
    ArcObject获取ArcMap默认地理数据库的路径
    标准IO
    进程关系
    进程环境
    C语言基础知识位运算
    Bash 快捷键
    信号
    UNIX系统文件
    进程
    unix 文件属性
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244593.html
Copyright © 2011-2022 走看看