本文將實例演示DATE_ADD函數用法。mysql
DATE_ADD(date,INTERVAL exprtype)函數:返回與所給日期date相差INTERVAL時間段的日期。其中INTERVAL是間隔類型關鍵字,expr是一個表達式,這個表達式對應後面的類型,type是間隔類型,MySQL提供了13種間隔類型,如表所示。sql
表達式類型函數 |
描述spa |
格式code |
HOURblog |
小時ip |
hhci |
MINUTEget |
分table |
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) |