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

Oracle SQL中获取当前月份前3个月的日期范围

Oracle SQL实现往前推3个月的完整日期范围查询

修改后的SQL代码如下:

select abc, eff_dt 
from xyz 
where eff_dt between add_months(trunc(sysdate, 'MM'), -3) and last_day(add_months(trunc(sysdate, 'MM'), -1))

逻辑说明

  • trunc(sysdate, 'MM'):取当前日期所在月份的第一天(比如2023/5/26会得到2023/5/1,2023/6/1会得到2023/6/1)
  • add_months(trunc(sysdate, 'MM'), -3):将当前月份第一天往前推3个月,得到查询范围的起始日期(对应需求中的a)
  • last_day(add_months(trunc(sysdate, 'MM'), -1)):将当前月份第一天往前推1个月后,取该月的最后一天,得到查询范围的结束日期(对应需求中的b)

验证场景

  1. 当当前日期为2023/5/26时:
    • 起始日期:add_months(2023/5/1, -3) = 2023/2/1
    • 结束日期:last_day(add_months(2023/5/1, -1)) = last_day(2023/4/1) = 2023/4/30
  2. 当当前日期为2023/6/1时:
    • 起始日期:add_months(2023/6/1, -3) = 2023/3/1
    • 结束日期:last_day(add_months(2023/6/1, -1)) = last_day(2023/5/1) = 2023/5/31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:14:56