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

Oracle中UPDATE语句日期范围判断不符合预期问题咨询

问题分析与解决
  • 问题根源:BETWEEN运算符要求左右边界必须是左小右大(起始日期在前,结束日期在后)。你写的条件里,trunc(sysdate)(当前日期,比如10/14/2024)在前,trunc(sysdate - 15)(9/30/2024)在后,这时候BETWEEN的逻辑变成了“大于等于当前日期且小于等于15天前的日期”——这个范围本身是空的,因为当前日期肯定比15天前大,所以任何日期都会满足NOT BETWEEN,导致更新每次都执行。

  • 修正后的SQL:把两个边界值调换顺序,让更早的日期(15天前)在前,当前日期在后:

update tablex
set field = 1 
where tableid = 1
and to_date('10/14/2024', 'mm/dd/yyyy') not between trunc(sysdate - 15) and trunc(sysdate);
  • 验证逻辑:当10/14/2024处于9/30/2024到10/14/2024之间时,NOT BETWEEN返回false,更新操作就会被跳过,完全符合你原本的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:31:03