mysql中date_add()函数的使用?

Posted QA-3K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中date_add()函数的使用?相关的知识,希望对你有一定的参考价值。

需求描述:

  在使用mysql的过程中,需要对日期进行计算,比如对某个日期加上几天,几个小时等操作,

  在此记录下,date_add()函数的使用.

操作过程:

date_add()函数语法:

  DATE_ADD(date,INTERVAL expr unit)

备注:date_add()和adddate()是同义词.

参数说明:

  date:起始日期或者起始时间

  expr:指定的是一个间隔值,在起始时间中增加或者减少,注意:expr是一个字符串.对于负值间隔,可以以"-"开头

  unit:表示的是一个单位,比如,加上的是1天还是一个小时.

1.对某个日期加上n天的操作

mysql> select date_add(\'2018-06-26\',INTERVAL \'5\' day);
+-----------------------------------------+
| date_add(\'2018-06-26\',INTERVAL \'5\' day) |
+-----------------------------------------+
| 2018-07-01                              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(\'2018-06-26\',INTERVAL \'-5\' day);
+------------------------------------------+
| date_add(\'2018-06-26\',INTERVAL \'-5\' day) |
+------------------------------------------+
| 2018-06-21                               |
+------------------------------------------+
1 row in set (0.01 sec)

备注:expr是字符串,如果加上的正值的天数,直接\'5\'即可,如果是减可以用date_sub函数或者expr为负值\'-5\'.

2.对某个日期加上n小时,n分钟,n秒的操作

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL 1 hour);  #对于日期加上1小时
+-------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL 1 hour) |
+-------------------------------------------------+
| 2018-06-27 00:59:59                             |
+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL 1 minute);  #对于日期加上1分钟
+---------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL 1 minute) |
+---------------------------------------------------+
| 2018-06-27 00:00:59                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL 1 second);  #对日期加上1秒钟
+---------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL 1 second) |
+---------------------------------------------------+
| 2018-06-27 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

3.对于某个日期加上n分钟n秒

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1\' MINUTE_SECOND);
+--------------------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1\' MINUTE_SECOND) |
+--------------------------------------------------------------+
| 2018-06-27 00:01:00                                          |
+--------------------------------------------------------------+
1 row in set (0.00 sec)

备注:一次性加上1分钟,一秒.

4.对于某个日期加上n小时n分钟n秒

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1:1\' HOUR_SECOND);
+--------------------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1:1\' HOUR_SECOND) |
+--------------------------------------------------------------+
| 2018-06-27 01:01:00                                          |
+--------------------------------------------------------------+
1 row in set (0.00 sec)

备注:单位HOUR_SECOND就是从小时到秒.expr:HOURS:MINUTES:SECONDS

5.对某个日期加上n小时n分钟

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1\' HOUR_MINUTE);
+------------------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL \'1:1\' HOUR_MINUTE) |
+------------------------------------------------------------+
| 2018-06-27 01:00:59                                        |
+------------------------------------------------------------+
1 row in set (0.00 sec)

备注:加上1小时1分钟

6.对某个日期加上几天几小时几分钟几秒钟

mysql> select date_add(\'2018-06-26 23:59:59\',INTERVAL \'2 2:1:1\' DAY_SECOND);
+---------------------------------------------------------------+
| date_add(\'2018-06-26 23:59:59\',INTERVAL \'2 2:1:1\' DAY_SECOND) |
+---------------------------------------------------------------+
| 2018-06-29 02:01:00                                           |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

备注:在日期上加上2天2小时2分钟1秒钟

 

unit(单位)和expr(表达式)对照表:

 

小结:

  对于某个日期的计算,无论加上多少,都可以根据这个表格进行调整.对于日期的减法,尽量用date_sub()函数来实现.

 

文档创建时间:2018年6月26日14:01:08

以上是关于mysql中date_add()函数的使用?的主要内容,如果未能解决你的问题,请参考以下文章

mysql date_add()函数的使用

Mysql中使用函数处理时间

mysql时间相加函数DATE_ADD()

MySQL DATE_ADD函数

MySQL

使用列名作为 inteval expr 时,hsqldb 的 date_add 函数中出现意外标记