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

如何在Oracle数据库中查询上一个月份的天数?

在Oracle数据库中获取上一个月份总天数的方法

嘿,我来给你分享几个在Oracle里快速获取上个月总天数的实用方案,都是日常开发里常用的:

方法一:利用LAST_DAY + EXTRACT(最常用)

这是最直观的方法,核心是先找到上个月的最后一天,再提取它的日期数值:

SELECT EXTRACT(DAY FROM LAST_DAY(ADD_MONTHS(SYSDATE, -1))) AS last_month_total_days
FROM DUAL;

逻辑解释:

  • ADD_MONTHS(SYSDATE, -1):把当前日期往前推一个月,得到上个月的当前日期
  • LAST_DAY(...):获取这个日期所在月份的最后一天(比如上个月是2024年2月的话,就会返回2024-02-29)
  • EXTRACT(DAY FROM ...):提取最后一天的“日”部分,也就是这个月的总天数

方法二:通过计算两个月第一天的差值

另一种思路是用当月第一天减去上个月第一天,得到的天数差就是上个月的总天数:

SELECT (TRUNC(SYSDATE, 'MM') - TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM')) AS last_month_total_days
FROM DUAL;

逻辑解释:

  • TRUNC(SYSDATE, 'MM'):截断当前日期到当月第一天(比如今天是2024-04-10,就返回2024-04-01)
  • TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM'):得到上个月的第一天(比如2024-03-01)
  • 两个日期直接相减,Oracle会返回天数差,也就是上个月的总天数

方法三:针对指定日期获取其上一个月的天数

如果不是基于当前日期,而是要获取某个特定日期的上一个月天数,只需要把SYSDATE换成目标日期即可:

-- 示例:获取2024-03-15的上一个月(2024年2月)的总天数
SELECT EXTRACT(DAY FROM LAST_DAY(ADD_MONTHS(TO_DATE('2024-03-15', 'YYYY-MM-DD'), -1))) AS last_month_total_days
FROM DUAL;

小提示

以上方法都能自动处理闰年的情况,比如2024年的2月会正确返回29天,不用额外写判断逻辑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:19