DAYOFWEEK(date):週索引(1=週日...7=週六)WEEKDAY(date):週索引(0=週一...6=週日)DAYOFMONTH(date):月份中的日期(1-31)DAYOFYEAR(date):年中的第幾天(1-366)MONTH(date):月份(1-12)DAYNAME(date):星期名稱MONTHNAME(date):月份名稱QUARTER(date):季度(1-4)WEEK(date[,first]):週數,first=0 週日起算,=1 週一起算YEAR(date):年份(1000-9999)HOUR(time)、MINUTE(time)、SECOND(time):時/分/秒PERIOD_ADD(P,N):期間 P(YYMM/YYYYMM) 加 N 月,回傳 YYYYMMPERIOD_DIFF(P1,P2):兩期間月份差DATE_ADD(date, INTERVAL expr type)、DATE_SUB、ADDDATE、SUBDATE(後兩者為同義詞)。MySQL 3.23+ 可直接用 +/- 運算子。
type 與 expr 格式對照:
| type | 含義 | expr 格式 |
|---|---|---|
| SECOND | 秒 | SECONDS |
| MINUTE | 分 | MINUTES |
| HOUR | 時 | HOURS |
| DAY | 天 | DAYS |
| MONTH | 月 | MONTHS |
| YEAR | 年 | YEARS |
| MINUTE_SECOND | 分:秒 | "MINUTES:SECONDS" |
| HOUR_MINUTE | 時:分 | "HOURS:MINUTES" |
| DAY_HOUR | 天 時 | "DAYS HOURS" |
| YEAR_MONTH | 年-月 | "YEARS-MONTHS" |
| HOUR_SECOND | 時:分:秒 | "HOURS:MINUTES:SECONDS" |
| DAY_MINUTE | 天 時:分 | "DAYS HOURS:MINUTES" |
| DAY_SECOND | 天 時:分:秒 | "DAYS HOURS:MINUTES:SECONDS" |
允許任意標點分隔符。若 date 為 DATE 且運算僅涉及年月日,結果為 DATE,否則為 DATETIME。間隔值過短時 MySQL 假設省略高位部份(如 DAY_SECOND 給 "1:10" 視為分:秒)。非法日期回傳 NULL。月份天數不足時自動調整至該月最大天數。
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_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND); -- 1997-12-30 22:58:59
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); -- 199907