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

Oracle使用dual表查询符合指定规则的工作日日期的实现问题

Oracle 基于dual表的规则工作日查询实现

实现逻辑

  • 首先通过TRUNC(SYSDATE, 'MONTH')获取当月第一天的日期
  • 判断当月第一天的星期属性:如果为周日或周一,返回当月第一个周二的日期;其他场景默认返回当月第一天(可根据业务需要调整其他分支的返回逻辑)
  • 所有星期判断逻辑固定使用英文星期标识,避免不同数据库NLS环境设置导致的判断异常

完整查询语句

SELECT 
  CASE
    WHEN TO_CHAR(TRUNC(SYSDATE, 'MONTH'), 'DY', 'NLS_DATE_LANGUAGE = AMERICAN') IN ('SUN', 'MON')
    THEN NEXT_DAY(TRUNC(SYSDATE, 'MONTH'), 'TUESDAY', 'NLS_DATE_LANGUAGE = AMERICAN')
    ELSE TRUNC(SYSDATE, 'MONTH')
  END AS target_work_day
FROM DUAL;

效果验证示例

你可以替换SYSDATE为指定日期测试不同场景的返回结果:

  • 代入DATE'2024-09-01'(2024年9月1日为周日):返回结果为2024-09-03
  • 代入DATE'2024-07-01'(2024年7月1日为周一):返回结果为2024-07-02
  • 代入DATE'2024-10-01'(2024年10月1日为周二):返回结果为2024-10-01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:15:02