> 技术文档 > mysql DATE_ADD用法详解_mysql dateadd

mysql DATE_ADD用法详解_mysql dateadd


MySQL 中DATE_ADD()函数的用法详解

DATE_ADD()是 MySQL 中用于日期时间计算的核心函数,可对日期或时间进行加减操作。以下是完整用法说明:

基本语法


DATE_ADD(date, INTERVAL value unit)

  • date:要操作的日期或时间值(如\'2025-06-23\'、NOW())。
  • value:要添加的数值(正数为加,负数为减)。
  • unit:时间单位,支持以下关键字:
    • YEAR(年)、MONTH(月)、DAY(日)、HOUR(时)、MINUTE(分)、SECOND(秒)、WEEK(周)、QUARTER(季度)等。

常见示例

1. 添加年 / 月 / 日

-- 给当前日期加1年

SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR); -- 输出:2026-06-23 20:36:00

-- 给指定日期减3个月

SELECT DATE_ADD(\'2025-06-23\', INTERVAL -3 MONTH); -- 输出:2025-03-23

-- 给时间加15天

SELECT DATE_ADD(\'2025-06-23 12:00:00\', INTERVAL 15 DAY); -- 输出:2025-07-08 12:00:00

2. 同时操作多个单位

-- 加1年2个月3天

SELECT DATE_ADD(\'2025-06-23\', INTERVAL \'1-2-3\' YEAR_MONTH_DAY); -- 输出:2026-08-26

-- 减1小时30分钟

SELECT DATE_ADD(NOW(), INTERVAL \'-1:30\' HOUR_MINUTE);

3. 结合字段使用(如 UPDATE 语句)

-- 将所有订单的过期时间延长7天

UPDATE orders

SET expire_time = DATE_ADD(expire_time, INTERVAL 7 DAY)

WHERE status = \'pending\';

-- 将2025年的日期全部改为2024年(保留月日时分秒)

UPDATE your_table

SET pay_time = DATE_ADD(pay_time, INTERVAL (2024 - YEAR(pay_time)) YEAR)

WHERE YEAR(pay_time) = 2025;

注意事项

  1. 负数表示减法

-- 等同于 DATE_SUB() 函数

SELECT DATE_ADD(NOW(), INTERVAL -1 DAY); -- 昨天

SELECT DATE_SUB(NOW(), INTERVAL 1 DAY); -- 效果相同

  1. 自动处理进位 / 退位

-- 月末日期进位

SELECT DATE_ADD(\'2025-01-31\', INTERVAL 1 MONTH); -- 输出:2025-02-28(自动处理非闰年)

-- 闰年2月29日退位

SELECT DATE_ADD(\'2024-02-29\', INTERVAL 1 YEAR); -- 输出:2025-02-28

  1. 时间单位缩写
    • MICROSECOND(微秒)
    • DAY_HOUR(天 + 时)
    • DAY_MINUTE(天 + 分)
    • DAY_SECOND(天 + 秒)
    • HOUR_MINUTE(时 + 分)
    • HOUR_SECOND(时 + 秒)
    • MINUTE_SECOND(分 + 秒)

与其他日期函数对比

函数

作用

示例

DATE_ADD()

日期时间加减

DATE_ADD(NOW(), INTERVAL 1 DAY)

DATE_SUB()

日期时间减法(等同于 DATE_ADD 负数)

DATE_SUB(NOW(), INTERVAL 1 DAY)

DATEDIFF()

计算两个日期的天数差

DATEDIFF(\'2025-06-23\', \'2025-01-01\') → 173

TIMESTAMPDIFF()

计算两个日期的指定单位差(如小时、分钟)

TIMESTAMPDIFF(HOUR, \'2025-06-23 10:00\', \'2025-06-23 12:30\') → 2.5

常见场景

  • 计算未来 / 过去的日期:如活动倒计时、会员过期提醒。
  • 批量修改日期字段:如将 2025 年数据改为 2024 年。
  • 生成时间序列:如生成未来 30 天的日期列表。

掌握DATE_ADD()函数可以灵活处理 MySQL 中的日期时间计算需求!