mysql DATE_ADD函数用法举例

 更新时间:2025年08月15日 11:01:07   作者:toooooop8  
MySQL的DATE_ADD()函数用于日期时间加减,语法为DATE_ADD(date,INTER,VALvalue unit),支持年、月、日等单位,可处理进位退位,常用于计算未来日期、批量修改字段及生成时间序列,接下来通过本文给大家讲解mysql DATE_ADD用法,感兴趣的朋友一起看看吧

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 中的日期时间计算需求!

到此这篇关于mysql DATE_ADD函数用法举例的文章就介绍到这了,更多相关mysql date_add用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 坑人的Mysql5.7问题(默认不支持Group By语句)

    坑人的Mysql5.7问题(默认不支持Group By语句)

    这篇文章主要介绍了坑人的Mysql5.7问题(默认不支持Group By语句),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • JDBC-idea导入mysql连接java的jar包(mac)的方法

    JDBC-idea导入mysql连接java的jar包(mac)的方法

    这篇文章主要介绍了JDBC-idea导入mysql连接java的jar包(mac)的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • MySQL最左匹配原则深入分析

    MySQL最左匹配原则深入分析

    首先回顾一下什么是最左匹配(也有称之为最左前缀)?顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配
    2022-11-11
  • MySQL 给用户添加 ALTER VIEW 的权限的步骤

    MySQL 给用户添加 ALTER VIEW 的权限的步骤

    在 MySQL 中,用户权限的管理是非常重要的,以确保数据库安全性和数据完整性,这篇文章主要介绍了MySQL 给用户添加 ALTER VIEW 的权限,需要的朋友可以参考下
    2024-05-05
  • MySQL 横向衍生表(Lateral Derived Tables)的实现

    MySQL 横向衍生表(Lateral Derived Tables)的实现

    横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来介绍一下MySQL 横向衍生表(Lateral Derived Tables)的实现,感兴趣的可以了解一下
    2025-06-06
  • MySQL表的约束示例详解

    MySQL表的约束示例详解

    文章详细介绍了数据库约束的种类,包括非空约束、默认值、列描述、主键(单主键和复合主键)、自增长、唯一键和外键,这些约束确保了数据库中数据的完整性、合法性和可预期性,对mysql表的约束相关知识感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • MySQL一对多查询的实现示例

    MySQL一对多查询的实现示例

    一对多连接查询就是其中一种常见的查询方式,它可以将一张表中的一行记录与多张表中的多行记录关联起来,并将其结果输出,本文就来介绍一下如何使用,感兴趣的可以了解一下
    2023-10-10
  • MySQL 动态分区管理自动化与优化实践记录

    MySQL 动态分区管理自动化与优化实践记录

    本文将详细介绍如何通过 MySQL 的存储过程和事件调度器实现动态分区管理,确保分区表能够自动适应数据增长,同时避免分区冲突,感兴趣的朋友一起看看吧
    2025-05-05
  • Mysql精粹系列(精粹)

    Mysql精粹系列(精粹)

    本文都是小编日常整理的mysql精粹内容,需要大家熟练掌握并记忆的知识,非常不错,具有参考借鉴价值,对mysql知识感兴趣的朋友一起看看吧
    2016-09-09
  • MySQL优化方案参考

    MySQL优化方案参考

    今天小编就为大家分享一篇关于MySQL优化方案参考,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论