DATE_ADD() 是 MySQL 中非常实用的日期时间函数,专门用于对日期或时间进行加减运算。简单来说,它可以给日期“加几天”、“减几个月”,或者调整小时、分钟,灵活且高效。

该函数能够根据用户指定的时间间隔(如天、月、小时),对给定的日期或时间值进行精确调整,轻松应对各种日期计算场景。
语法
DATE_ADD(date, INTERVAL value unit)
date:待操作的原始日期或时间值。value:要添加或减去的数值。正数表示增加,负数表示减少。unit:时间单位,例如 DAY、MONTH、YEAR、HOUR 等。
关键点
INTERVAL是 MySQL 的关键字,用于定义时间间隔。- 单位和数值组合在一起,决定了如何调整
date值。 - 若需做减法,可直接给
value传入负数,或使用更直观的DATE_SUB()函数。
常见的单位(unit)
| 单位 | 含义 |
|---|---|
| SECOND | 秒 |
| MINUTE | 分钟 |
| HOUR | 小时 |
| DAY | 天 |
| MONTH | 月 |
| YEAR | 年 |
| WEEK | 周(7天) |
| QUARTER | 季度(3个月) |
| MICROSECOND | 微秒 |
案例解释
1. 增加时间
SELECT DATE_ADD('2024-12-01', INTERVAL 10 DAY); -- 输出:2024-12-11
给 2024-12-01 增加 10 天,结果为 2024-12-11,简单直观。
2. 减少时间
若需减少时间,可直接传入负数,或使用 DATE_SUB() 更清晰易读:
SELECT DATE_ADD('2024-12-01', INTERVAL -10 DAY);
-- 或
SELECT DATE_SUB('2024-12-01', INTERVAL 10 DAY);
-- 输出:2024-11-21
两种方式结果一致,可根据习惯灵活选用。
3. 增加月份和年份
SELECT DATE_ADD('2024-12-01', INTERVAL 2 MONTH); -- 输出:2025-02-01
SELECT DATE_ADD('2024-12-01', INTERVAL 1 YEAR); -- 输出:2025-12-01
加 2 个月自动跨年到 2025 年 2 月;加 1 年则直接到 2025 年同一天。MySQL 会自动处理边界情况,无需手动干预。
4. 增加具体时间
SELECT DATE_ADD('2024-12-01 10:30:00', INTERVAL 2 HOUR);
-- 输出:2024-12-01 12:30:00
对带时间戳的日期加 2 小时,结果变为中午 12:30,在业务逻辑处理中非常实用。
总结
DATE_ADD() 是 MySQL 中处理日期加减的利器,支持从天到微秒的多种时间单位,配合正负数即可灵活实现“加”或“减”操作。在时间计算、范围查询、报表生成等场景中,它几乎每天都会用到。掌握此函数,能大幅减少手动计算日期的麻烦,提升开发效率。
