系統對比 MySQL 五大日期時間類型,助你精準選型避坑。
| 類型 | 存儲 | 範圍 | 零值 | 插入格式示例 | 顯示格式 |
|---|---|---|---|---|---|
| YEAR | 1B | 1901~2155 | 0000 | 2023 / '2023' | 2023 |
| DATE | 3B | 1000-01-01 ~ 9999-12-31 | 0000-00-00 | '2023-05-01' / '20230501' / '2023@05@01' | 2023-05-01 |
| TIME | 3B | -838:59:59 ~ 838:59:59 | 00:00:00 | 'D HH:MM:SS' / 'HHMMSS' / 'HH:MM:SS' | HH:MM:SS |
| DATETIME | 8B | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 0000-00-00 00:00:00 | '2023-05-01 12:30:45' / '20230501123045' | 2023-05-01 12:30:45 |
| TIMESTAMP | 4B | 1970-01-01 08:00:01 ~ 2038-01-19 11:14:07 (UTC) | 0000-00-00 00:00:00 | 同 DATETIME / NULL / CURRENT_TIMESTAMP | 2023-05-01 12:30:45 (按時區顯示) |
'2 23:59:59' 表示 2 天 23 時 59 分 59 秒 = 71:59:59,超過 24 小時無問題。'2023@05@01'、'2023*05*01' 均合法,顯示統一為 - 和 :。2023-05-01 12:00:00,東七區讀取顯示 11:00:00。2038 年問題需評估長期項目風險。TIMESTAMP 列插入 NULL 或無值自動設為當前時間(若未顯式指定 DEFAULT CURRENT_TIMESTAMP 行為一致)。'0000-00-00' 在應用層常導致解析異常,建議啟用 NO_ZERO_DATE / NO_ZERO_IN_DATE SQL 模式禁止寫入零值。YEAR(1 字節極省)。DATE(3 字節)。DATETIME(8 字節,範圍大、無 2038 問題)。TIMESTAMP(4 字節,自動維護)。TIME(可超 24h)。