SQL 给定的日期是否为工作日,有一张假日表(包括周六日上班)

SQL 给定的日期是否为工作日,有一张假日表(包括周六日上班)

【相关推荐】



  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7712155
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:sql中计算输出百分比 ,并保留两位小数或判断数据库中时间,是否为当日时间进行判断,输出百分比,当前在线数,今日总在线数
  • 除此之外, 这篇博客: 【sql练习】计算时间差的秒数(考虑非工作日)中的 节假日表数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    DROP TABLE IF EXISTS holiday_table;
    CREATE TABLE holiday_table (
      DATE_ID date,
      DAY_WORK int,
      isWork varchar(50)
    ) ;
    

    插入数据

    INSERT INTO holiday_table VALUES ('2018-03-30 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-03-31 00:00:00',2,'放假'  );
    INSERT INTO holiday_table VALUES ('2018-04-01 00:00:00',2,'放假'  );
    INSERT INTO holiday_table VALUES ('2018-04-02 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-03 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-04 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-05 00:00:00',2,'放假'  );
    INSERT INTO holiday_table VALUES ('2018-04-06 00:00:00',2,'放假'  );
    INSERT INTO holiday_table VALUES ('2018-04-07 00:00:00',2,'放假'  );
    INSERT INTO holiday_table VALUES ('2018-04-08 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-09 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-10 00:00:00',1,'工作日');
    INSERT INTO holiday_table VALUES ('2018-04-11 00:00:00',1,'工作日');
    
    DATE_IDDAY_WORKisWork
    2018-03-30 00:00:001工作日
    2018-03-31 00:00:002放假
    2018-04-01 00:00:002放假
    2018-04-02 00:00:001工作日
    2018-04-03 00:00:001工作日
    2018-04-04 00:00:001工作日
    2018-04-05 00:00:002放假
    2018-04-06 00:00:002放假
    2018-04-07 00:00:002放假
    2018-04-08 00:00:001工作日
    2018-04-09 00:00:001工作日
    2018-04-10 00:00:001工作日

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^