本文将实例演示DATE_ADD函数用法。
DATE_ADD(date,INTERVAL exprtype)函数:返回与所给日期date相差INTERVAL时间段的日期。其中INTERVAL是间隔类型关键字,expr是一个表达式,这个表达式对应后面的类型,type是间隔类型,MySQL提供了13种间隔类型,如表所示。
表达式类型 |
描述 |
格式 |
HOUR |
小时 |
hh |
MINUTE |
分 |
mm |
SECOND |
秒 |
ss |
YEAR |
年 |
YY |
MONTH |
月 |
MM |
DAY |
日 |
DD |
YEAR_MONTH |
年和月 |
YY-MM |
DAY_HOUR |
日和小时 |
DD |
DAY_MINUTE |
日和分钟 |
DD |
DAY_ |
SECOND |
日和秒 |
HOUR_MINUTE |
小时和分 |
hh:mm |
HOUR_SECOND |
小时和秒 |
hh:ss |
MINUTE_SECOND |
分钟和秒 |
mm:ss |
来看一个具体的例子,在这个例子中第1列返回了当前日期时间,第2列返回距离当前日期31天后的日期时间,第3列返回距离当前日期一年两个月后的日期时间。
示例1:
mysql> select now() current,date_add(now(),INTERVAL 31 day) after31days, -> date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth; +---------------------+---------------------+------------------------+ | current | after31days | after_oneyear_twomonth | +---------------------+---------------------+------------------------+ | 2016-11-22 13:47:53 | 2016-12-23 13:47:53 | 2018-01-22 13:47:53 | +---------------------+---------------------+------------------------+ 1 row in set (0.00 sec) |
同样也可以用负数让它返回之前的某个日期时间,如下第 1 列返回了当前日期时间,第 2列返回距离当前日期31天前的日期时间,第3列返回距离当前日期一年两个月前的日期时间。
示例2:
mysql> select now() current,date_add(now(),INTERVAL -31 day) after31days, -> date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth; +---------------------+---------------------+------------------------+ | current | after31days | after_oneyear_twomonth | +---------------------+---------------------+------------------------+ | 2016-11-22 13:49:08 | 2016-10-22 13:49:08 | 2015-09-22 13:49:08 | +---------------------+---------------------+------------------------+ 1 row in set (0.00 sec) |
下面的例子计算出当前距离2020年2月2日还有多少天:
示例3:
mysql> select DATEDIFF('2020-02-02',now()); +------------------------------+ | DATEDIFF('2020-02-02',now()) | +------------------------------+ | 1167 | +------------------------------+ 1 row in set (0.04 sec) |
来源:oschina
链接:https://my.oschina.net/u/2971691/blog/793161