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

如何调整Oracle查询使月末非周日时才返回结果(触发器场景)

调整Oracle查询实现当月最后一天且非周日时返回结果

你可以通过Oracle的TO_CHAR日期函数判断当前日期是否为周日,结合原有的当月最后一天判断条件,修改后的查询如下:

SELECT * FROM DUAL 
WHERE LAST_DAY(SYSDATE) = SYSDATE
  AND TO_CHAR(SYSDATE, 'D', 'NLS_DATE_LANGUAGE=AMERICAN') != '1';

关键说明:

  • LAST_DAY(SYSDATE) = SYSDATE:保留原逻辑,判断当前日期是否为当月最后一天。
  • TO_CHAR(SYSDATE, 'D', 'NLS_DATE_LANGUAGE=AMERICAN'):强制使用美式日期语言规则,将日期转换为对应的星期数字(1代表周日,2代表周一,…,7代表周六)。指定NLS_DATE_LANGUAGE是为了避免不同数据库环境的语言设置影响结果。
  • != '1':排除周日的情况,确保仅在当月最后一天且非周日时返回结果。

如果习惯用星期名称判断,也可以写成:

SELECT * FROM DUAL 
WHERE LAST_DAY(SYSDATE) = SYSDATE
  AND UPPER(TO_CHAR(SYSDATE, 'FMDAY', 'NLS_DATE_LANGUAGE=AMERICAN')) != 'SUNDAY';

这里FMDAY会返回不带空格的星期名称,UPPER统一转为大写后和'SUNDAY'对比,同样能实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:45:47