| type | 含義 | expr 格式 |
| SECOND/MINUTE/HOUR/DAY/MONTH/YEAR | 單位 | 數值 |
| MINUTE_SECOND | 分:秒 | "MIN:SEC" |
| HOUR_MINUTE | 時:分 | "HOUR:MIN" |
| DAY_HOUR | 天 時 | "DAY HOUR" |
| YEAR_MONTH | 年-月 | "YEAR-MONTH" |
| HOUR_SECOND | 時:分:秒 | "H:M:S" |
| DAY_MINUTE | 天 時:分 | "DAY H:M" |
| DAY_SECOND | 天 時:分:秒 | "DAY H:M:S" |
示例:
SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; -- 1998-01-01 00:00:00
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 DAY); -- 1998-01-01 23:59:59
SELECT DATE_ADD("1997-12-31 23:59:59", 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 00:00:00", INTERVAL "-1 10" DAY_HOUR); -- 1997-12-30 14:00:00
提取組合:EXTRACT
SELECT EXTRACT(YEAR FROM "1999-07-02"); -- 1999
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); -- 199907
SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03"); -- 20102
天數轉換
TO_DAYS(date):公元 0 年起天數(忽略 1582 前)。TO_DAYS('1997-10-07') → 729669
FROM_DAYS(N):天數轉日期。FROM_DAYS(729669) → '1997-10-07'
格式化輸出:DATE_FORMAT / TIME_FORMAT
常用格式符:
| 符號 | 含義 |
| %Y | 4位年 |
| %m | 2位月(01-12) |
| %d | 2位日(01-31) |
| %H | 24制時(00-23) |
| %i | 分(00-59) |
| %s | 秒(00-59) |
| %W | 星期全名 |
| %M | 月份全名 |
| %r | 12制時間(hh:mm:ss AM/PM) |
| %T | 24制時間(hh:mm:ss) |
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'
當前時間
NOW() / SYSDATE() / CURRENT_TIMESTAMP():日期時間
CURDATE() / CURRENT_DATE():日期
CURTIME() / CURRENT_TIME():時間
Unix 時間戳互轉
UNIX_TIMESTAMP() / UNIX_TIMESTAMP(date) → 秒數
FROM_UNIXTIME(ts) / FROM_UNIXTIME(ts, format) → 日期時間/格式化
秒↔時間
SEC_TO_TIME(sec) → 'HH:MM:SS'
TIME_TO_SEC(time) → 總秒數
收藏建議
將此表存為代碼片段,業務開發中直接複製適配,避免手寫拼接 SQL 導致時區/格式 Bug。
- 上一篇文章: MySQL 四捨五入函數完全指南:ROUND、FLOOR、CEILING
- 下一篇文章: MySQL 學習筆記:INSERT、UPDATE、DELETE 核心操作(慕課整理)
Copyright ©
程式碼之家 All Rights Reserved