You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Oracle SQL Developer中用CASE与函数实现下一个工作日判断

Oracle 计算指定日期下一个工作日并结合CASE判断

1. 创建自定义函数获取下一个工作日

先创建PL/SQL函数GET_NEXT_WORKDAY,用于计算输入日期的下一个工作日(默认跳过周六、周日,需支持节假日可扩展):

CREATE OR REPLACE FUNCTION GET_NEXT_WORKDAY(p_start_date DATE)
RETURN DATE
IS
    v_next_day DATE;
BEGIN
    -- 先获取当前日期的下一天
    v_next_day := p_start_date + 1;
    
    -- 循环跳过周末,直到得到工作日
    WHILE TO_CHAR(v_next_day, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN') LOOP
        v_next_day := v_next_day + 1;
    END LOOP;
    
    RETURN v_next_day;
END;
/

函数说明

  • 用NLS_DATE_LANGUAGE=ENGLISH指定周几标识为英文,避免数据库语言设置差异导致的判断错误
  • 通过循环跳过周六(SAT)和周日(SUN),确保返回值为下一个工作日
  • 若需兼容节假日,可在函数中加入节假日表查询逻辑,判断v_next_day是否为节假日,若是则继续往后递推

2. 结合CASE语句实现需求逻辑

直接在SQL中调用上述函数,结合CASE完成判断:

SELECT
    start_date,
    end_date,
    CASE 
        WHEN GET_NEXT_WORKDAY(start_date) = end_date THEN 0 
        ELSE 1 
    END AS is_not_next_workday
FROM
    your_table_name;

逻辑说明

  • 当start_date的下一个工作日等于end_date时,返回0
  • 其余所有情况返回1

内容的提问来源于stack exchange,提问作者CAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:14:52