MySQL TIMESTAMP 欄位可設 DEFAULT CURRENT_TIMESTAMP 自動寫入目前時間,但**每張表僅限一欄位**使用此預設值。本文說明設定方法、限制、與 DATETIME 差異、phpMyAdmin 介面操作。
CREATE TABLE t (
id INT PRIMARY KEY AUTO_INCREMENT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- 這會報錯 #1293
CREATE TABLE t (
c1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
c2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
錯誤:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
DEFAULT CURRENT_TIMESTAMPDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(不佔用 DEFAULT 額度)DATETIME + 應用層/觸發器維護| 特性 | DATETIME | TIMESTAMP |
|---|---|---|
| 範圍 | 1000-01-01 ~ 9999-12-31 | 1970-01-01 ~ 2038-01-19 |
| 儲存大小 | 8 bytes | 4 bytes |
| 時區轉換 | 不轉換(儲存原值) | **儲存為 UTC,讀取轉回會話時區** |
| 自動初始化 | 5.6.5+ 支援 | 早期即支援 |
| 索引效能 | 略優(固定長度) | 略低 |