[Oracle] ADD_MONTHS()函数

ADD_MONTHS() 是 Oracle 中专门用于日期计算的函数,它可以在给定日期上增加或减少指定的月数

ADD_MONTHS()函数特别适合需要精确处理月份增减的业务场景

语法格式

sql 复制代码
ADD_MONTHS(date, number_of_months)

参数说明

date: 基准日期(DATE 类型)

number_of_months: 要添加的月数,可以是整数或小数(小数部分会被忽略)

正数:向未来计算

负数:向过去计算

示例

sql 复制代码
-- 当前日期加2个月
SELECT ADD_MONTHS(SYSDATE, 2) FROM dual;

-- 当前日期减3个月
SELECT ADD_MONTHS(SYSDATE, -3) FROM dual;

-- 月末处理
-- 如果基准日期是某月的最后一天,结果也会是该月的最后一天
SELECT ADD_MONTHS(TO_DATE('2025-01-31', 'YYYY-MM-DD'), 1) FROM dual;  -- 2025/2/28

-- 自动处理跨年份的月份计算
SELECT ADD_MONTHS(TO_DATE('2025-11-15', 'YYYY-MM-DD'), 3) FROM dual;  -- 2026/2/15

-- 保留日期部分
-- 结果会保留原始日期的时分秒部分
SELECT ADD_MONTHS(TO_DATE('2025-08-09 14:30:00', 'YYYY-MM-DD HH24:MI:SS'), 1) FROM dual;  -- 2025/9/9 下午 02:30:00

-- 与TRUNC()函数结合使用
-- 去年同月第一天
SELECT ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -12) FROM dual;

提示Tips

① 月数(包含小数)会被截断取整(不四舍五入)

sql 复制代码
-- 等同于 ADD_MONTHS(SYSDATE, 1)
SELECT ADD_MONTHS(SYSDATE, 1.9) FROM dual;
相关推荐
计算机毕设VX:Fegn089513 小时前
计算机毕业设计|基于springboot + vue医院设备管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Mr__Miss13 小时前
保持redis和数据库一致性(双写一致性)
数据库·redis·spring
Knight_AL14 小时前
Spring 事务传播行为 + 事务失效原因 + 传播行为为什么不用其他模式
数据库·sql·spring
倔强的石头_14 小时前
时序数据时代的“存储与分析困局”解析及金仓解决方案
数据库
计算机毕设VX:Fegn089515 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
倔强的石头_15 小时前
场景化落地指南——金仓时序数据库在关键行业的应用实践
数据库
SelectDB16 小时前
驾驭 CPU 与编译器:Apache Doris 实现极致性能的底层逻辑
运维·数据库·apache
zbguolei16 小时前
MySQL根据身份证号码计算出生日期和年龄
数据库·mysql
马克学长17 小时前
SSM校园图书借阅服务系统jd2z8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·图书管理系统·ssm 框架·ssm 校园图书借阅系统
软件派17 小时前
高斯数据库使用心得——从性能优化到行业实践的深度解析
数据库·oracle