1、创建一个表用于存储假期和调整的上班时间:holiday_of_china。

      字段设计:日期(BDATE)、是否假期(HFLAG)、假期名称(NAME)

       维护假期信息表,请求接口、手动维护都可以。主要是需标识出一年内的假期以及加班日,数据量一般就30至40条。hflag为true代表假期,false代表加班日。具体数据如下:

2、直接COPY代码:

--创建视图:VIEW_WORKDAYS
CREATE OR REPLACE VIEW VIEW_WORKDAYS AS
    select cast(bdate as nvarchar2(10)) bdate 
    from(
       SELECT to_char(TRUNC(SYSDATE, 'YYYY') + ROWNUM - 1,'YYYY-MM-DD') bdate
       FROM DUAL
       CONNECT BY ROWNUM <= ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 12) - TRUNC(SYSDATE, 'YYYY')
    )
    --holiday_of_china为第一步骤创建的维护表,用于存储特殊日期
    --排除假期及周末(hflag判断是否为假期)
    where to_char(TO_DATE(bdate,'YYYY-MM-DD'),'D') not in (1,7)
      and bdate not in (select bdate from holiday_of_china where hflag= 'True')
    union all
    --增加周六周末调整为上班的时间
    select bdate 
    from holiday_of_china 
    where hflag= 'False'
    order by bdate desc;

3、使用视图:

--查询整年的工作日
select bdate
from VIEW_WORKDAYS

效果(2020年国庆前后工作日):

2020-10-14 2020-10-30
2020-10-13 2020-10-29
2020-10-12 2020-10-28
2020-10-10 2020-10-27
2020-10-09 2020-10-26
2020-09-30 2020-10-23
2020-09-29 2020-10-22
2020-09-28 2020-10-21
2020-09-27 2020-10-20
2020-09-25 2020-10-19
2020-09-24 2020-10-16
2020-09-23 2020-10-15

4、最后:如果喜欢,欢迎点赞收藏以及转发。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐