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)
验证场景
- 当当前日期为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
- 起始日期:
- 当当前日期为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
相关产品推荐
相关产品推荐

