写在前面  参考文章

SQL 如何得到两个日期间的工作日(附假期表)_Fuzz-CSDN博客_sql计算日期之间工作日函数

这篇文章使用的是SQL SEVER ,如何转化为 MYSQL

新手尝试两个小时,不喜勿碰 (直接复制他的内容了,代码改一下)

懒得截图跟上传附件了,建议两篇文章比对着看

思路是一样的,就是将开始时间到截止时间按日期进行拆分,与工作日的辅助表进行关联,关联后对辅助列计数

SELECT
    id,
    [SP PO creation Date],
    [HUB GI date],
    COUNT (*) AS COUNT
FROM
    (
        SELECT
            id,
            [SP PO creation Date],
            [HUB GI date],
            DATEADD(
                DAY,
                number,
                [SP PO creation Date]
            ) AS riqi

-- 在这里 SQL SEVER 中DATEADD(DAY,增加的天数,字段名),MYSQL 中是 DATE_ADD(字段名,INTERVAL 增加的天数 DAY)   替换掉就好

--  然后他这里用到一个number,这个number下边说

FROM
            [DW].[dbo].[TAB Row Data From ECC temp6] AS A
        INNER JOIN master..spt_values AS B ON DATEADD(
            DAY,
            number,
            [SP PO creation Date]
        ) <= [HUB GI date]
        AND B.[type] = 'P'

order by id,riqi  --(没啥用,删掉了)

-- 注意标绿色的,这个代码是SQL SEVER中自带的库,MYSQL查了半天没有,或者我不知道,然后查了一下SQL SEVER 中 master..spt_values . [type] =  'P' 其实就是从0开始的一串数。然后可以再新建一个辅助表,辅助表就是从0开始一直到好多吧,你看你要计算的工作日最大能有多少,一两千都行,越多查询的越慢

(辅助表的表名比如是 number,字段名也是number)

-- 那么上面的DATE_ADD这个代码就可以改成DATE_ADD(字段名,INTERVAL number DAY)

-- INNER JOIN 这个代码就可以改成  INNER JOIN number AS B ON...

AND NOT EXISTS (
            SELECT
                1
            FROM
                [TAB].[dbo].[holiday] b
            WHERE
                [DAY_WORK] = 2
            AND DATEADD(
                DAY,
                number,
                [SP PO creation Date]
            ) = CONVERT (DATE, [DATE_ID])
        )

-- 这段代码是要排除出去假日的数据,但是我不知道为什么按照他的执行结果是没有排除的,可能我的水平不行吧,然后进行了一下修改

-- 首先 NOT EXISTS不知道为什么执行出来没效果,所以我用了NOT IN ,整体修改如下

AND DATE_ADD( [SP PO creation Date] ,    INTERVAL number DAY) 
                 not in 
                (
                            SELECT DATE FROM   [TAB].[dbo].[holiday]    WHERE  [DAY_WORK] = 2 
                )

) a
GROUP BY
    id,
    [SP PO creation Date],
    [HUB GI date]

-- 全部修改后的代码如下

SELECT
    id,[SP PO creation Date], [HUB GI date],COUNT (*) AS COUNT
FROM
    (
            SELECT
            id,[SP PO creation Date],[HUB GI date],
            DATE_ADD( [SP PO creation Date] ,    INTERVAL number DAY) AS riqi

FROM
                 [DW].[dbo].[TAB Row Data From ECC temp6] AS A
            INNER JOIN number AS B ON DATE_ADD( [SP PO creation Date] ,    INTERVAL number DAY) <= [HUB GI date]

AND DATE_ADD( [SP PO creation Date] ,    INTERVAL number DAY) 
                NOT IN
                (SELECT DATE FROM   [TAB].[dbo].[holiday]    WHERE  [DAY_WORK] = 2 )                ) a
GROUP BY
    id, [SP PO creation Date], [HUB GI date]

需要的辅助表到原文下载,或者自建一个,序号表0-你需要的数,自建一个

纯手打,不喜勿碰,欢迎指正

MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)相关推荐

  1. SQL 如何得到两个日期间的工作日(附假期表)

    首先,我们有这样一张表 我们要知道两个日期间的工作日天数,相信大家有遇到过这个恶心人的需求,所谓工作日,不简简单单的就是除周六日以外的日子.要考虑到节假日,国庆啊,中秋啊,最让人头疼的是,你根本无法掌 ...

  2. oracle计算两个日期间的工作日(根据表配置)

    首先新增表用于配置非工作日,工作日,具体配置在程序中处理 DROP TABLE "T_WEEKDAY"; CREATE TABLE "T_WEEKDAY" (& ...

  3. Python计算两个日期间的工作日(交易日),去除周末节假日

    首先区分一下这里的工作日和节假日是不同的. 工作日是指去掉节假日即周末,但是不去掉调休的日期. 交易日主要针对金融行业,是指去掉节假日和周末,因为周末金融市场也是停盘的,所以即使周末因为调休工作,也不 ...

  4. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

  5. 记录一次计算两个日期间的工作日天数,排除节假日、周末等

    1.数据库存储节假日.补班日期 数据库结构如下,0代表节日,1代表补班日期,需要每年更新 2.代码 (1)计算相差天数 @Overridepublic Long getWorkDay(String s ...

  6. SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)

    CREATE FUNCTION GetWorkDays(@dt_begin DATETIME , --计算的开始日期@dt_end DATETIME --计算的结束日期) RETURNS INT AS ...

  7. 计算两个日期间有多少个工作日

    function TmainForm.WorksDay( //计算两个日期间有多少个工作日 mStartDate: TDate; //开始日期 mEndDate: TDate //终止日期 ): In ...

  8. 计算两个日期之间的工作日(去掉周末和节假日)

    一个贴吧上找到的,整理一下 package com.uphone.commons;import java.text.ParseException; import java.text.SimpleDat ...

  9. python编程工时计算_Python编程题:两个日期间的天数统计(附代码)

    编程题一:计算两个日期之间的天数 题目如下: 题目一 解题思路: 将两个日期格式化成time模块中的标准时间结构struct_time,缺少值用0补齐利用time模块函数分别计算两个日期到时间戳(指格 ...

最新文章

  1. flash 入门课知识小结
  2. 如何区分两列中不同数据_如何在VESTA中区分不同表面层的原子
  3. 这可能是东半球最保姆级的后台服务器开发学习路线
  4. GitHub回应突然断供:身在美国不由己,无权提前通知预警
  5. 忍一时得寸进尺, 退一步变本加厉。
  6. 自嘲尾款人、丁工人?今年双十一就没想让你做人
  7. Cuckoo WIndows 安装
  8. linux 下添加,修改,删除路由
  9. 【渝粤教育】电大中专新媒体营销实务 (6)作业 题库
  10. 前端学习(3197):jsx语法规则1
  11. faiss python安装_如何在ubuntu 18.04上安装faiss GPU
  12. apache安装步骤(redhat)
  13. Android安卓小程序-随机数生成器
  14. java并发编程-CAS算法
  15. html实现圆形图片
  16. 2020年手机上最好的25种免费游戏
  17. Java常见面试题大全
  18. 计算机音乐专业考研,武汉音乐学院2021年硕士研究生招生考试《计算机音乐作曲》考试大纲...
  19. 红米3用电信卡显示无服务器,红米3支持电信卡吗?红米3支持联通卡吗?
  20. Win10安装ST-Link驱动

热门文章

  1. 基于PHP+MySQL大连真爱果汁厂管理系统的设计与实现
  2. 2007年世界杀毒软件排行榜
  3. Markdown的使用之一:表格和公式
  4. 为什么不建议把数据库部署在 Docker 容器内?
  5. ORB-SLAM2跑TUM RGBD数据集时灰屏卡住
  6. PADS-电阻、电容、电感CAE封装
  7. png图片损坏打不开如何修复?
  8. 给静态图片添加动态效果
  9. Android学习之ImageView放置gif动态图
  10. 点到直线的垂直交点坐标 和 距离计算