Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Áp dụng NOW() cho trường TIMESTAMP trong MySQL Workbench?

Giải pháp: DEFAULT CURRENT_TIMESTAMP

Khi tạo bảng, đặt default cho cột TIMESTAMP là CURRENT_TIMESTAMP (hoặc NOW()).

Ví dụ minh họa

Tạo bảng với default timestamp

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ShippingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Chèn không chỉ định ShippingDate

INSERT INTO DemoTable() VALUES();

Kết quả

+----+---------------------+
| Id | ShippingDate        |
+----+---------------------+
| 1  | 2019-06-08 21:35:58 |
+----+---------------------+

Trong MySQL Workbench (GUI)

  1. Mở Table Editor (chuột phải bảng → Alter Table)
  2. Chọn cột TIMESTAMP
  3. Trong tab Columns, cột Default/Expression:
  4. Chọn/nhập: CURRENT_TIMESTAMP
  5. Apply → Finish

Các biến thể DEFAULT TIMESTAMP

Cú phápHành vi
TIMESTAMP DEFAULT CURRENT_TIMESTAMPTạo: set NOW(); Update: không đổi
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPTạo: NOW(); Update: NOW()
TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMPTạo: 0; Update: NOW()
TIMESTAMP DEFAULT CURRENT_TIMESTAMPChỉ set khi INSERT không cung cấp giá trị

Lưu ý quan trọng

  • Chỉ một cột TIMESTAMP mỗi bảng có DEFAULT/ON UPDATE CURRENT_TIMESTAMP (trước MySQL 5.6.5)
  • MySQL 5.6.5+: Cho phép nhiều cột TIMESTAMP với DEFAULT
  • DATETIME cũng hỗ trợ DEFAULT CURRENT_TIMESTAMP từ MySQL 5.6.5
  • Timezone: TIMESTAMP chuyển UTC ↔ session timezone, DATETIME không

Cập nhật thủ công với NOW()

-- Insert có chỉ định
INSERT INTO DemoTable(ShippingDate) VALUES(NOW());

-- Update
UPDATE DemoTable SET ShippingDate = NOW() WHERE Id = 1;

MySQL Workbench: Chạy query

  1. Ctrl+T: Mở tab query mới
  2. Viết SQL
  3. Ctrl+Enter: Execute selection
  4. Kết quả hiển thị dưới dạng grid