| 符號 | 含義 | 示例輸出 |
|---|---|---|
| %Y | 4位年份 | 2024 |
| %y | 2位年份 | 24 |
| %m | 月份 (01-12) | 01 |
| %c | 月份 (1-12) | 1 |
| %M | 月份英文全稱 | January |
| %b | 月份英文縮寫 | Jan |
| %d | 日期 (01-31) | 01 |
| %e | 日期 (1-31) | 1 |
| %H | 小時 24制 (00-23) | 14 |
| %h/%I | 小時 12制 (01-12) | 02 |
| %i | 分鐘 (00-59) | 30 |
| %S/%s | 秒 (00-59) | 45 |
| %T | 時間 24制 (HH:MM:SS) | 14:30:45 |
| %r | 時間 12制 (HH:MM:SS AM/PM) | 02:30:45 PM |
| %p | AM/PM | PM |
| %W | 星期全稱 | Monday |
| %a | 星期縮寫 | Mon |
| %w | 星期數 (0=週日, 6=週六) | 1 |
| %j | 年內天數 (001-366) | 001 |
| %f | 微秒 (000000-999999) | 123456 |
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 2024-01-15 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 2024-01-15 14:30:45 SELECT DATE_FORMAT(NOW(), '%b %d, %Y'); -- Jan 15, 2024 SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H時%i分'); -- 2024年01月15日 14時30分 SELECT DATE_FORMAT(NOW(), '%Y-%m-%dT%H:%i:%sZ'); -- ISO 8601: 2024-01-15T14:30:45Z
SELECT FROM_UNIXTIME(1705312245); -- 2024-01-15 14:30:45
SELECT FROM_UNIXTIME(1705312245, '%Y-%m-%d %H:%i:%s'); -- 2024-01-15 14:30:45 SELECT FROM_UNIXTIME(create_time, '%Y-%m-%d') AS create_date FROM orders;
SELECT UNIX_TIMESTAMP(); -- 當前時間戳
SELECT UNIX_TIMESTAMP('2024-01-15 14:30:45'); -- 指定時間轉時間戳
SELECT UNIX_TIMESTAMP(create_time) FROM orders;
-- 方案 1: TO_DAYS 比較 (推薦,跨月/跨年安全) SELECT * FROM game_log WHERE TO_DAYS(FROM_UNIXTIME(start_time)) = TO_DAYS(NOW()); -- 方案 2: DATE 比較 (5.7+ 支持隱式轉換) SELECT * FROM game_log WHERE DATE(FROM_UNIXTIME(start_time)) = CURDATE(); -- 方案 3: 字符串比較 (效能較差) SELECT * FROM game_log WHERE DATE_FORMAT(FROM_UNIXTIME(start_time), '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d');
-- 會話級設置時區 SET time_zone = '+08:00'; -- 或 'Asia/Shanghai' -- 存儲統一用 UTC 時間戳 (INT/BIGINT) -- 顯示時按用戶時區轉換 SELECT FROM_UNIXTIME(create_time, '%Y-%m-%d %H:%i:%s') AS local_time FROM orders;
DATE_FORMAT(col) = ...),導致索引失效col >= '2024-01-01' AND col < '2024-01-02'BIGINT,查詢時應用層轉換或用 FROM_UNIXTIME 只在 SELECT 列表中PARTITION BY RANGE (TO_DAYS(create_time))) 實現分區裁剪DATE_FORMAT 用於任意日期時間格式化輸出,FROM_UNIXTIME 專為時間戳轉換設計。核心原則:存儲用 UTC 時間戳/UTC DATETIME,顯示時按業務時區格式化,WHERE 條件避免函數包裹列。