×

Lấy dấu thời gian hiện tại với CURRENT_TIMESTAMP trong MySQL

Trong quá trình xây dựng cơ sở dữ liệu, việc theo dõi thời gian cập nhật hoặc tạo mới các bản ghi là vô cùng quan trọng. MySQL cung cấp một công cụ cực kỳ hữu ích cho việc này, đó chính là CURRENT_TIMESTAMP.

CURRENT_TIMESTAMP là một hàm được sử dụng để lấy dấu thời gian hiện tại của hệ thống dưới dạng YYYY-MM-DD HH:MM:SS. Đây là một công cụ mạnh để đảm bảo rằng bạn có thể ghi lại thời điểm chính xác khi một bản ghi nào đó được tạo hoặc sửa đổi.

Cách sử dụng CURRENT_TIMESTAMP

Việc sử dụng CURRENT_TIMESTAMP có thể được thực hiện trong nhiều ngữ cảnh khác nhau, bao gồm cả khi tạo bảng mới hoặc cập nhật bảng đã tồn tại. Dưới đây là một số cách thức phổ biến để sử dụng CURRENT_TIMESTAMP.

Tạo bảng mới với CURRENT_TIMESTAMP

Khi tạo một bảng mới, bạn có thể sử dụng CURRENT_TIMESTAMP để tự động ghi lại thời điểm mà mỗi bản ghi được thêm vào hoặc cập nhật. Ví dụ:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Trong ví dụ trên:

  • created_at sẽ tự động được thiết lập giá trị là thời gian hiện tại khi bản ghi được tạo.
  • updated_at sẽ tự động cập nhật giá trị thời gian hiện tại mỗi khi bản ghi được sửa đổi.

Cập nhật bảng hiện có

Nếu bạn đã có một bảng và muốn thêm các cột theo dõi thời gian, bạn có thể dùng lệnh ALTER TABLE:

ALTER TABLE users 
ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

Sử dụng CURRENT_TIMESTAMP trong lệnh INSERT

Bạn cũng có thể sử dụng CURRENT_TIMESTAMP trong lệnh INSERT để thiết lập thời gian cụ thể. Ví dụ:

INSERT INTO users (username, created_at, updated_at) 
VALUES ('JohnDoe', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

Hoặc nếu bạn không muốn chỉ định cụ thể giá trị của cột thời gian, bạn có thể bỏ qua vì hệ thống sẽ tự động thêm:

INSERT INTO users (username)
VALUES ('JaneDoe');

Lúc này các cột created_atupdated_at sẽ tự động nhận giá trị CURRENT_TIMESTAMP do đã được thiết lập khi tạo bảng.

Những lưu ý khi sử dụng CURRENT_TIMESTAMP

  • CURRENT_TIMESTAMP hoạt động dựa trên thời gian của hệ thống máy chủ MySQL. Nếu thời gian máy chủ không chính xác, giá trị thu thập được cũng sẽ không chính xác.
  • Kể từ MySQL 5.6.5, các cột kiểu TIMESTAMPDATETIME có khả năng tự động cập nhật với giá trị CURRENT_TIMESTAMP. Trước đó, chỉ các cột kiểu TIMESTAMP mới có tính năng này.
  • Bạn có thể sử dụng CURRENT_TIMESTAMP với độ chính xác lên tới micro giây bằng cách sử dụng cú pháp CURRENT_TIMESTAMP(fsp), trong đó fsp là giá trị độ chính xác phân số giây (fractional seconds).

Bằng cách sử dụng CURRENT_TIMESTAMP một cách hiệu quả, bạn có thể dễ dàng theo dõi và quản lý thời gian thay đổi của dữ liệu trong cơ sở dữ liệu MySQL của mình.

Comments