[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;
相关推荐
何时梦醒1 天前
🏯 从零搭建《天龙八部》RAG 智能问答系统 — 完整实战学习日志
数据库·人工智能
无忧.芙桃1 天前
MySQL数据库原理与实践(四):基本查询
大数据·数据库·mysql
秋田君1 天前
Qt_常用控件使用学习
数据库·qt·学习
爱喝水的鱼丶1 天前
SAP-ABAP:SELECT大数据量查询性能调优——避免嵌套循环、减少数据库交互的核心方案
开发语言·数据库·sql·性能优化·sap·abap·erp
三8441 天前
get方法/post方法/SQL注入文字型/数字型
数据库·sql·mysql
TDengine (老段)1 天前
已有TSDB?一条配置,免费解锁AI数据管理平台
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据
海兰1 天前
【数据库】tdsql(mysql8.0)优化思考三
数据库·redis
煎饼学大模型1 天前
Agent 的“大脑-手“解耦架构:当推理层和工具执行层各自独立演进
数据库·人工智能·oracle·架构·agent
千河殇 多想和她2 天前
线上 Redis 突然“爆”了,怎么办?
数据库·redis·bootstrap
muddjsv2 天前
SQLite数据库文件机制详解:journal、wal、shm文件作用与备份避坑
数据库·sqlite