oracle查找当前日期的三个工作日前那天日期,采用函数方式

在Oracle数据库中,需要查询A表中'日期1'字段为当前日期减去三个工作日的记录。考虑到节假日和周末,需结合查询表ZS_YJSF的YZRQ字段,同时考虑CS_JJR表中的节假日区间进行条件筛选。
摘要由CSDN通过智能技术生成

业务场景:

取A表中的字段“日期1”的三个工作日前的那一天。有一张现成的表里面是有每年的节假日和周末的期间。

 具体表如下:

查询表ZS_YJSF 时,加条件:YZRQ(应征日期)字段等于当前日期的三个工作日前的那天。

有一张表CS_JJR中有两个字段:节假日期起JJRQQ,节假日期止JJRQZ,存了每年所有的节假日周末日期区间。

模拟场景:

CREATE OR REPLACE FUNCTION Func_getworkday(
v_date DATE, -- 指定某日期
v_deferday NUMBER -- 前几天日期
) RETURN DATE
IS 
v_beforeday DATE :=v_date-v_deferday+1;
v_holiday_num NUMBER :=0;
v_sum  NUMBER:=0;
i NUMBER :=1;
v_bd NUMBER :=v_deferday;
v_date1 DATE:= to_date(to_char(v_date,'yyyymmdd'),'yyyymmdd');
v_sql VARCHAR2(1000);
BEGIN 
  WHILE i<=(v_bd+v_sum) LOOP
    -- 遍历日期,如在节假日表中找到数据则记为1,否则记为0,保存在变量v_holiday_num中
    v_sql:='SELECT nvl(count(1),0)  FROM CS_JJR  WHERE :1 BETWEEN to_date(to_char(JJROO,''yyyymmdd''),''yyyymmdd'')
           AND to_date(to_char
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值