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;
注意事项
- 负数表示减法:
-- 等同于 DATE_SUB() 函数
SELECT DATE_ADD(NOW(), INTERVAL -1 DAY); -- 昨天
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY); -- 效果相同
- 自动处理进位 / 退位:
-- 月末日期进位
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
- 时间单位缩写:
-
- 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 中的日期时间计算需求!