ADDDATE(date, INTERVAL expr unit)、ADDDATE(expr, days)
當第二個參數使用 INTERVAL 形式時,ADDDATE() 是 DATE_ADD() 的同義詞。對應的減法函數為 SUBDATE()(DATE_SUB() 同義詞)。
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', 31) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
第二個參數為整數時,MySQL 視為天數直接加到日期上。
| 單位 | 含義 |
|---|---|
| MICROSECOND | 微秒 |
| SECOND | 秒 |
| MINUTE | 分 |
| HOUR | 時 |
| DAY | 天 |
| WEEK | 週 |
| MONTH | 月 |
| QUARTER | 季度 |
| YEAR | 年 |
| SECOND_MICROSECOND | 秒.微秒 |
| MINUTE_MICROSECOND | 分:秒.微秒 |
| MINUTE_SECOND | 分:秒 |
| HOUR_MICROSECOND | 時:分:秒.微秒 |
| HOUR_SECOND | 時:分:秒 |
| HOUR_MINUTE | 時:分 |
| DAY_MICROSECOND | 天 時:分:秒.微秒 |
| DAY_SECOND | 天 時:分:秒 |
| DAY_MINUTE | 天 時:分 |
| DAY_HOUR | 天 時 |
| YEAR_MONTH | 年-月 |
DATE_ADD()/DATE_SUB(),語義更明確。ADDDATE('2023-01-31', INTERVAL 1 MONTH) → 2023-02-28(非閏年)。WHERE 條件動態計算時間窗口:WHERE create_time >= ADDDATE(NOW(), INTERVAL -7 DAY)。