需從 DATETIME/TIMESTAMP 列提取日期(YYYY-MM-DD),推薦使用 DATE_FORMAT,兼容性強、格式可控。
SELECT DATE_FORMAT(crt_time, '%Y-%m-%d') FROM ad_n_advertise_t;
輸出示例:2024-01-15。
| 函數 | 語法 | 輸出類型 | 備註 |
|---|---|---|---|
| DATE_FORMAT | DATE_FORMAT(dt, '%Y-%m-%d') | VARCHAR | 格式靈活,推薦 |
| DATE | DATE(dt) | DATE | 最簡潔,返回日期類型,可直接比較 |
| CAST | CAST(dt AS DATE) | DATE | 標準 SQL,同 DATE() |
| LEFT | LEFT(dt, 10) | VARCHAR | 依賴默認格式,不推薦 |
DATE_FORMAT 定制格式。DATE(dt) 或 CAST(dt AS DATE),保持日期類型,利用索引(函數索引 8.0+ 支持)。GROUP BY DATE(crt_time)。TIMESTAMP 存儲為 UTC,讀取時按會話時區轉換;DATETIME 不轉換。跨時區應用統一用 TIMESTAMP 或應用層處理時區。
截取日期首選 DATE_FORMAT(dt, '%Y-%m-%d')(字符串場景)或 DATE(dt)(日期運算場景),避免 LEFT/SUBSTRING 等脆弱寫法。