转载自   MySQL date_add()函数

MySQL DATE_ADD函数简介

DATE_ADD函数将间隔时间添加到DATE或DATETIME值。 下面说明了DATE_ADD函数的语法:

DATE_ADD(start_date, INTERVAL expr unit);

DATE_ADD函数有两个参数:

  • start_dateDATEDATETIME的起始值。
  • INTERVAL expr unit是要添加到起始日期值的间隔值。

根据参数,DATE_ADD函数可能会返回一个DATETIME值或一个字符串:

  • DATETIME - 如果第一个参数是DATETIME值,或者如果间隔值具有时间元素,如小时,分钟或秒等。
  • 否则返回字符串。

MySQL DATE_ADD函数示例

我们来看几个例子来了解DATE_ADD函数的工作原理。

示例-1 加1秒到时间:2017-12-31 23:59:59

mysql> SELECT DATE_ADD('2017-12-31 23:59:59', INTERVAL 1 SECOND) result;
+---------------------+
| result              |
+---------------------+
| 2018-01-01 00:00:00 |
+---------------------+
1 row in set

示例-2 - 添加1天到时间:2017-12-31 00:00:01

mysql> SELECT DATE_ADD('2017-12-31 00:00:01',INTERVAL 1 DAY) result;
+---------------------+
| result              |
+---------------------+
| 2018-01-01 00:00:01 |
+---------------------+
1 row in set

示例-3 - 在时间2017-12-31 23:59:59上加11秒。

mysql> SELECT DATE_ADD('2017-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) result;
+---------------------+
| result              |
+---------------------+
| 2018-01-01 00:01:00 |
+---------------------+
1 row in set

示例-4 - 在时间2000-01-01 00:00:00上加-15小时。

mysql> SELECT DATE_ADD('2000-01-01 00:00:00', INTERVAL '-1 5' DAY_HOUR) result;
+---------------------+
| result              |
+---------------------+
| 1999-12-30 19:00:00 |
+---------------------+
1 row in set

示例-5 - 添加1秒和999999微秒到时间:2017-12-31 23:59:59.000002

mysql> SELECT DATE_ADD('2017-12-31 23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND) result;
+----------------------------+
| result                     |
+----------------------------+
| 2018-01-01 00:00:01.000001 |
+----------------------------+
1 row in set

MySQL DATE_ADD函数使用说明

间隔处理

在间隔期间 -

INTERVAL expr unit

expr被视为一个字符串,因此,当为expr使用非字符串值时,您应该小心。 例如,间隔为HOUR_MINUTE5/2求值结果为2.5000(不是2.5),并被视为2小时5000分钟,如下面的语句所示:

mysql> SELECT DATE_ADD('2017-01-01', INTERVAL 5 / 2 HOUR_MINUTE) result;
+---------------------+
| result              |
+---------------------+
| 2017-01-04 13:20:00 |
+---------------------+
1 row in set

为了确保非串间隔值的正确解释,您应该使用CAST函数,如下所示:

mysql> SELECT DATE_ADD('2017-01-01', INTERVAL CAST(6/4 AS DECIMAL(3,1)) HOUR_MINUTE) result;
+---------------------+
| result              |
+---------------------+
| 2017-01-01 01:05:00 |
+---------------------+
1 row in set

自动DATETIME转换

如果您将时间值添加到日期值,则结果为DATETIME值,如以下示例所示:

mysql> SELECT DATE_ADD('2017-01-01', INTERVAL 12 HOUR) result;
+---------------------+
| result              |
+---------------------+
| 2017-01-01 12:00:00 |
+---------------------+
1 row in set

起始日期无效

如果对第一个参数使用无效的日期,DATE_ADD函数将返回NULL,例如:

mysql> SELECT DATE_ADD('2017-02-30', INTERVAL 1 DAY) result;
+--------+
| result |
+--------+
| NULL   |
+--------+
1 row in set

如果要详细看到警告,请使用SHOW WARNINGS语句:

mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2017-02-30' |
+---------+------+----------------------------------------+
1 row in set

调整日,月或年

如果您将MONTHYEARYEAR_MONTH的间隔添加到导致日期大于新月份的最大日期的日期,则该日期将被调整为新月份的最大日期。

请看看以下示例:

mysql> SELECT DATE_ADD('2017-01-30', INTERVAL 1 MONTH) result;
+------------+
| result     |
+------------+
| 2017-02-28 |
+------------+
1 row in set

在这个例子中,我们在2017年1月30日相加上了1个月,结果是2017年2月28日。这一天被调整到2017年2月的最大天数。

如果是2月份有29天,日期也将调整为第29天,如下所示:

mysql> SELECT DATE_ADD('2012-01-30', INTERVAL 1 MONTH) result;
+------------+
| result     |
+------------+
| 2012-02-29 |
+------------+
1 row in set

在本教程中,您已经学习了如何使用MySQL DATE_ADD函数将间隔添加到DATEDATETIME值。

MySQL date_add()函数​​​​​​​相关推荐

  1. MySQL DATE_ADD() 函数

    用途: 在MySql语句执行日期的加减 实际情况: 常用于加减一段时间和当前时间比较的情况 函数如下: #date 指定的时间值 #INTERVAL #expr 添加的时间间隔 # 时间间隔单位 DA ...

  2. mysql的如何输入dateadd_mysql中date_add()函数的使用?

    需求描述: 在使用mysql的过程中,需要对日期进行计算,比如对某个日期加上几天,几个小时等操作, 在此记录下,date_add()函数的使用. 操作过程: date_add()函数语法: 备注:da ...

  3. MySql函数 - DATE_ADD()函数

    MySql函数 - DATE_ADD()函数 1.函数用途 date_add() 函数用来对日期进行加减 2.函数调用形式 // @date 欲操作的日期 // INTERVAL 关键字 // exp ...

  4. [Mysql] LAST_DAY函数 | DATE_ADD函数 | DATE_SUB函数

    1.LAST_DAY函数 LAST_DAY函数用于返回给定日期的那一月份的最后一天 语法格式 LAST_DAY(date) -- 2022-05-31 SELECT LAST_DAY('2022-05 ...

  5. Mysql日期函数使用大全

    为什么80%的码农都做不了架构师?>>>    1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有 ...

  6. MySQL date_sub()函数

    转载自  MySQL date_sub()函数 MySQL DATE_SUB函数简介 DATE_SUB()函数从DATE或DATETIME值中减去时间值(或间隔). 下面说明了DATE_SUB()函数 ...

  7. mysql常用函数参考

    mysql常用函数参考 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回 ...

  8. MySQL常用函数 二

    结合MySQL自带的帮助文档列一下MySQL数据库中常用的一些函数. 事实证明:MySQL的联机帮助资料非常实用,希望哪一天可爱的Oracle可以像MySQL学习一下,她可以让您基本不用查看其他的资料 ...

  9. MySQL常用函数系列之九:日期和时间函数 函数(4)

    2019独角兽企业重金招聘Python工程师标准>>> 本文将实例演示DATE_ADD函数用法. DATE_ADD(date,INTERVAL exprtype)函数:返回与所给日期 ...

最新文章

  1. Winform开发框架之系统重新登录、自动登录实现
  2. 复杂的结构化存取(一)
  3. 22种代码味道(Martin Fowler与Kent Beck)
  4. Python -- 循环技巧(Looping Techniques)
  5. 简单使用TFS管理源代码
  6. 以色列:新发明大幅提高太阳能发电效率
  7. 谷歌更新TensorFlow目标检测API
  8. 问题-提示“请确定磁盘未满或未被写保护而且文件未被使用”
  9. 如何:在 Windows 窗体 ListView 控件中启用平铺视图 【转载】
  10. (转)策略回测的框架、实现、测试
  11. 数模更新篇-3-因子分析模型
  12. 鲲鹏920的服务器芯片,鲲鹏920芯片是什么芯片
  13. 科技软文营销标题写作的5个常用技巧
  14. 关于Chrome沙箱技术(沙盒技术)
  15. 电脑Java安装 报错_Windows10系统电脑安装Java开发环境的方法
  16. BCH5月硬分叉,如果做成了支付,会超越BTC吗?
  17. Android教程 -05 Android6.0权限的管理
  18. android 微信签名,Android微信签名知识的总结
  19. 什么是IoT、IT、OT、CT
  20. 【C语言】#和##的作用

热门文章

  1. [mybatis]全局配置文件标签顺序
  2. 4位并行加载寄存器设计
  3. LeetCode 82 删除排序链表中的重复元素||-中等
  4. 蓝桥杯2015初赛-奇妙的数字
  5. python循环遍历所有目录_python 遍历文件夹
  6. ubuntu 文件管理器死机
  7. Spring cloud Loadbalance
  8. 2011年全国大学生程序设计邀请赛(福州)
  9. 牛客题霸 [数组中未出现的最小正整数] C++题解/答案
  10. 牛客-牛牛的猜球游戏