需求描述:

  在使用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

版权声明:本文为chuanzhang053原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chuanzhang053/p/9228798.html