| 函數 | 說明 | 示例輸出 |
|---|---|---|
NOW() / SYSDATE() | 當前日期時間(YYYY-MM-DD HH:MM:SS) | 2024-05-20 14:30:00 |
CURDATE() / CURRENT_DATE() | 當前日期 | 2024-05-20 |
CURTIME() / CURRENT_TIME() | 當前時間 | 14:30:00 |
UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP() | UTC 時間 | 2024-05-20 06:30:00 |
| 函數 | 說明 | 範例 |
|---|---|---|
YEAR(date) | 年份 (1000-9999) | YEAR('2024-05-20') → 2024 |
MONTH(date) | 月份 (1-12) | MONTH('2024-05-20') → 5 |
DAY(date) / DAYOFMONTH() | 月內天數 (1-31) | DAY('2024-05-20') → 20 |
DAYOFWEEK(date) | 週索引 (1=Sun ... 7=Sat,ODBC 標準) | DAYOFWEEK('2024-05-20') → 2 |
WEEKDAY(date) | 週索引 (0=Mon ... 6=Sun) | WEEKDAY('2024-05-20') → 0 |
DAYNAME(date) | 星期英文名 | DAYNAME('2024-05-20') → 'Monday' |
MONTHNAME(date) | 月份英文名 | MONTHNAME('2024-05-20') → 'May' |
DAYOFYEAR(date) | 年內天數 (1-366) | DAYOFYEAR('2024-05-20') → 141 |
WEEK(date[,mode]) | 年內週數,mode 控制週起始日與範圍 | WEEK('2024-05-20',1) → 21 |
QUARTER(date) | 季度 (1-4) | QUARTER('2024-05-20') → 2 |
HOUR(time), MINUTE(), SECOND() | 時/分/秒 | HOUR('14:30:00') → 14 |
MICROSECOND() | 微秒部分 | MICROSECOND('14:30:00.123456') → 123456 |
| 函數 | 說明 | 典型用法 |
|---|---|---|
DATE_ADD(date, INTERVAL expr unit) | 加減時間間隔 | DATE_ADD(NOW(), INTERVAL 1 DAY) |
DATE_SUB(date, INTERVAL expr unit) | 減去間隔 | DATE_SUB(NOW(), INTERVAL 3 MONTH) |
DATEDIFF(date1, date2) | 兩日期相差天數 (date1-date2) | DATEDIFF('2024-05-20','2024-05-01') → 19 |
TIMEDIFF(time1, time2) | 時間差 (time1-time2) | TIMEDIFF('12:00','09:30') → '02:30:00' |
DATE_FORMAT(date, format) | 按格式字串輸出 | DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') |
STR_TO_DATE(str, format) | 字串解析為日期 | STR_TO_DATE('20-05-2024','%d-%m-%Y') |
UNIX_TIMESTAMP([date]) | 轉 Unix 時間戳 | UNIX_TIMESTAMP() → 1716208200 |
FROM_UNIXTIME(ts[,format]) | 時間戳轉日期 | FROM_UNIXTIME(1716208200, '%Y-%m-%d') |
SEC_TO_TIME(seconds) | 秒數轉 HH:MM:SS | SEC_TO_TIME(3661) → '01:01:01' |
TIME_TO_SEC(time) | 時間轉總秒數 | TIME_TO_SEC('01:01:01') → 3661 |
PERIOD_ADD(P, N) | 年月數 P 加 N 月 | PERIOD_ADD(202405, 3) → 202408 |
PERIOD_DIFF(P1, P2) | 兩年月數差月數 | PERIOD_DIFF(202408,202405) → 3 |
DATE_FORMAT)%Y 4位年、%y 2位年、%m 2位月、%c 無前導零月%d 2位日、%e 無前導零日%H 24制時、%h 12制時、%i 分、%s 秒%W 完整星期名、%a 縮寫、%M 完整月名、%b 縮寫%p AM/PM、%r 12制時間 (hh:mm:ss AM/PM)DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE())) DAY)DATE_FORMAT(CURDATE(), '%Y-%m-01')WHERE created_at BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND CURDATE()CONVERT_TZ(dt, 'UTC', 'Asia/Taipei')(需載入時區表)WHERE date_col >= '2024-01-01' AND date_col < '2024-02-01' 避免函數包裹列導致索引失效