首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL TIMESTAMP 自動取得目前時間:建表設定、單一欄位限制、datetime 對比

     編輯:MySQL 資料庫相關知識

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;

⚠️ 關鍵限制:每表僅一個 DEFAULT CURRENT_TIMESTAMP

-- 這會報錯 #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_TIMESTAMP
  • 更新時間:DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(不佔用 DEFAULT 額度)
  • 或用 DATETIME + 應用層/觸發器維護

DATETIME vs TIMESTAMP 差異

phpMyAdmin 介面設定

  1. 「結構」頁籤 → 欄位「預設值」下拉選 CURRENT_TIMESTAMP
  2. 「屬性」可勾選 ON UPDATE CURRENT_TIMESTAMP
  3. 儲存 → 系統自動產生 ALTER TABLE

版本演進

  • 5.6.5+:DATETIME 也支援 DEFAULT CURRENT_TIMESTAMP
  • 8.0+:CHECK 條件約束可進一步驗證時間邏輯
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性DATETIMETIMESTAMP
範圍1000-01-01 ~ 9999-12-311970-01-01 ~ 2038-01-19
儲存大小8 bytes4 bytes
時區轉換不轉換(儲存原值)**儲存為 UTC,讀取轉回會話時區**
自動初始化5.6.5+ 支援早期即支援
索引效能略優(固定長度)略低