標準寫法
SELECT DATE_FORMAT(crt_time, '%Y-%m-%d') FROM ad_n_advertise_t;
格式化符號速查表
| 符號 | 含義 | 示例 |
| %Y | 四位年份 | 2024 |
| %y | 兩位年份 | 24 |
| %m | 月份 (01-12) | 01 |
| %d | 日期 (01-31) | 15 |
| %H | 小時 24制 (00-23) | 14 |
| %h | 小時 12制 (01-12) | 02 |
| %i | 分鐘 (00-59) | 30 |
| %s | 秒 (00-59) | 45 |
| %W | 星期名稱 | Monday |
| %M | 月份名稱 | January |
常用組合模板
-- 日期:2024-01-15
DATE_FORMAT(dt, '%Y-%m-%d')
-- 時間:14:30:45
DATE_FORMAT(dt, '%H:%i:%s')
-- 日期時間:2024-01-15 14:30:45
DATE_FORMAT(dt, '%Y-%m-%d %H:%i:%s')
-- 中文格式:2024年01月15日
DATE_FORMAT(dt, '%Y年%m月%d日')
-- 緊湊格式:20240115143045
DATE_FORMAT(dt, '%Y%m%d%H%i%s')
替代方案對比
| 方法 | 語法 | 返回類型 | 性能 | 適用場景 |
| DATE_FORMAT | DATE_FORMAT(dt, '%Y-%m-%d') | VARCHAR | 中 | 格式化輸出、報表展示 |
| DATE | DATE(dt) | DATE | 快 | 日期比較、篩選、索引友好 |
| CAST | CAST(dt AS DATE) | DATE | 快 | 類型轉換、標準 SQL |
| SUBSTRING | SUBSTRING(dt, 1, 10) | VARCHAR | 快 | 極簡提取、固定格式 |
最佳實踐建議
- WHERE 條件/連接/分組:用
DATE(crt_time) = '2024-01-15' 或 crt_time >= '2024-01-15' AND crt_time < '2024-01-16'(利用索引)
- SELECT 輸出展示:用
DATE_FORMAT 格式化
- 避免在 WHERE 中對列使用函數(如
DATE_FORMAT(crt_time, ...) = ...),導致索引失效