DATE_ADD(date, INTERVAL expr type)
DATE_SUB(date, INTERVAL expr type)
date:起始日期 (DATETIME 或 DATE)。expr:間隔值字串,負值前加 -。type:關鍵字指定單位,不分大小寫。| type | expr 格式範例 |
|---|---|
| SECOND | 10 |
| MINUTE | 5 |
| HOUR | 2 |
| DAY | 3 |
| MONTH | 1 |
| YEAR | 1 |
| MINUTE_SECOND | '5:30' |
| HOUR_MINUTE | '2:30' |
| DAY_HOUR | '3 5' |
| DAY_MINUTE | '3 5:30' |
| DAY_SECOND | '3 5:30:10' |
| YEAR_MONTH | '1-6' |
| HOUR_SECOND | '2:30:10' |
| SECOND_MICROSECOND | '10.500000' |
SELECT DATE_ADD('1997-12-31 23:59:59', INTERVAL 1 SECOND); -- 1998-01-01 00:00:00
SELECT DATE_ADD('1997-12-31', INTERVAL 1 DAY); -- 1998-01-01
SELECT DATE_ADD('1998-01-01', INTERVAL '1:1' MINUTE_SECOND); -- 1998-01-01 00:01:00
SELECT DATE_SUB('1998-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND); -- 1997-12-30 22:58:59
SELECT DATE_ADD('1998-01-01', INTERVAL '-1 10' DAY_HOUR); -- 1997-12-30 14:00:00
SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); -- 1997-12-02
規則:若 date 為 DATE 且運算不含時間部分,結果為 DATE;否則為 DATETIME。月份溢位自動調整至該月最後一天 (如 1月30日 + 1個月 = 2月28日)。
| 符號 | 說明 | 範例 |
|---|---|---|
| %Y | 四位年份 | 2024 |
| %y | 兩位年份 | 24 |
| %m | 月份 (00-12) | 08 |
| %c | 月份 (0-12) | 8 |
| %M | 月份英文名 | August |
| %b | 月份縮寫 | Aug |
| %d | 日期 (00-31) | 08 |
| %e | 日期 (0-31) | 8 |
| %D | 帶後綴日期 | 8th |
| %H | 小時 (00-23) | 22 |
| %h / %I | 小時 (01-12) | 10 |
| %i | 分鐘 (00-59) | 23 |
| %s / %S | 秒數 (00-59) | 00 |
| %T | 24小時制時間 | 22:23:00 |
| %r | 12小時制時間含 AM/PM | 10:23:00 PM |
| %W | 星期名稱 | Friday |
| %a | 星期縮寫 | Fri |
| %w | 星期索引 (0=Sun) | 5 |
| %j | 年內天數 (001-366) | 221 |
| %U | 週數 (Sun 為第一天) | 31 |
| %u | 週數 (Mon 為第一天) | 32 |
| %% | 字面 % 符號 | % |
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); -- Saturday October 1997
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); -- 22:23:00
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j'); -- 4th 97 Sat 04 10 Oct 277
SELECT DATE_FORMAT('1999-01-01', '%X %V'); -- 1998 52 (ISO 週年/週數)
所有其他字元原樣輸出。% 必須緊跟格式符。