日期屬性提取函數
| 函數 | 說明 | 範例結果 |
DAYOFWEEK(date) | 星期索引 (1=週日..7=週六) | SELECT DAYOFWEEK('2007-10-31'); → 4 |
WEEKDAY(date) | 星期索引 (0=週一..6=週日) | SELECT WEEKDAY('2007-10-31'); → 2 |
DAYOFMONTH(date) | 月份中的日期 (1-31) | SELECT DAYOFMONTH('2007-10-31'); → 31 |
DAYOFYEAR(date) | 年度中的天數 (1-366) | SELECT DAYOFYEAR('2007-10-31'); → 304 |
MONTH(date) | 月份 (1-12) | SELECT MONTH('2007-10-31'); → 10 |
DAYNAME(date) | 星期名稱 | SELECT DAYNAME('2007-10-31'); → 'Wednesday' |
MONTHNAME(date) | 月份名稱 | SELECT MONTHNAME('2007-10-31'); → 'October' |
QUARTER(date) | 季度 (1-4) | SELECT QUARTER('2007-10-31'); → 4 |
WEEK(date[,mode]) | 週數 (0-53),mode=0 週日起算,1 週一起算 | WEEK('1998-02-20',1); → 8 |
YEAR(date) | 年份 (1000-9999) | SELECT YEAR('98-02-03'); → 1998 |
時間屬性提取函數
| 函數 | 說明 | 範例 |
HOUR(time) | 小時 (0-23) | HOUR('10:05:03') → 10 |
MINUTE(time) | 分鐘 (0-59) | MINUTE('10:05:03') → 5 |
SECOND(time) | 秒數 (0-59) | SECOND('10:05:03') → 3 |
期間運算函數
| 函數 | 說明 | 範例 |
PERIOD_ADD(P,N) | 期間 P (YYMM/YYYYMM) 加 N 月 | PERIOD_ADD(9801,2) → 199803 |
PERIOD_DIFF(P1,P2) | 兩期間月份差 | PERIOD_DIFF(9802,199703) → 11 |
日期加減運算:DATE_ADD / DATE_SUB / ADDDATE / SUBDATE
MySQL 3.22+ 支援,3.23+ 可用 +/- 運算子簡化。INTERVAL expr type 指定間隔類型:
| 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" |
實戰範例
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
SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); -- 1997-12-02
-- 擷取日期部份
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
注意:若 date 為 DATE 型別且運算僅涉及年月日,結果為 DATE;否則為 DATETIME。