需求描述:

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

原文地址:https://www.cnblogs.com/chuanzhang053/p/9228798.html

发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

【MySQL基础】Mysql获得当前日期的所在月的第一天知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。