Oracle数据库中如何筛选上月初及之后的记录?
Oracle 筛选上月初及之后的记录
直接在WHERE子句里添加日期筛选条件即可,核心是用Oracle的日期函数计算出上一个月的第一天,然后让你的日期字段大于等于这个值。
假设你的日期字段名为date_column,修改后的查询如下:
SELECT columnA, columnB FROM TableX WHERE columnA=20 AND date_column >= TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM');
函数拆解说明:
SYSDATE:Oracle内置函数,返回当前系统日期和时间ADD_MONTHS(SYSDATE, -1):将当前日期往前推1个月,比如当前是2022-12-20,这个函数会返回2022-11-20TRUNC(..., 'MM'):把日期截断到当月第一天,结合上面的结果,就能得到上一个月的第一天(比如2022-11-01)
这样不管当前是哪个月份,都能自动筛选出上月初到现在的所有记录,完全符合你要的逻辑:
- 当前是10月时,筛选9月1日及之后的记录(包含9月和10月)
- 当前是2022年12月时,筛选2022年11月1日及之后的记录(包含11月和12月)
如果你的日期字段包含时分秒,这个条件也能正常生效,因为TRUNC得到的日期是当月第一天的00:00:00,>=会包含所有从那天开始的时间点。
内容的提问来源于stack exchange,提问作者Fábio Pires
相关产品推荐
相关产品推荐

