×

Lấy thời gian hiện tại với hàm LOCALTIME() trong MySQL

Hàm LOCALTIME() là một trong những hàm hữu ích trong MySQL giúp lấy thời gian hiện tại của hệ thống nơi máy chủ MySQL đang chạy. Khi làm việc với cơ sở dữ liệu, việc lưu trữ và truy xuất thời gian chính xác là rất quan trọng trong nhiều ứng dụng, từ việc theo dõi giao dịch đến ghi lại thời gian các sự kiện.

Cách sử dụng hàm

Cú pháp cơ bản của hàm này rất đơn giản:

SELECT LOCALTIME();

Kết quả của câu lệnh trên sẽ là thời gian hiện tại của hệ thống máy chủ dưới dạng YYYY-MM-DD HH:MM:SS. Cụ thể hơn, nó sẽ trả về giá trị thời gian mà hệ thống nhận diện tại thời điểm câu lệnh được thực thi.

Ví dụ:

SELECT LOCALTIME();

Mặc dù không cần đối số, hàm LOCALTIME() có thể được sử dụng trong nhiều tình huống khác nhau để đầy đủ xử lý thời gian. Dưới đây là một số ví dụ phổ biến khi làm việc với LOCALTIME().

Ứng dụng thực tế

Tạo bảng với cột thời gian tự động

Bạn có thể tạo bảng trong đó một cột tự động điền thời gian hiện tại bất cứ khi nào có một bản ghi mới được thêm vào.

CREATE TABLE user_actions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    action VARCHAR(255),
    action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Trong cấu trúc bảng trên, cột action_time sẽ tự động sử dụng thời gian hiện tại bất cứ khi nào một hành động mới được thêm vào mà không cần phải tự tay điền giá trị.

Chèn dữ liệu với thời gian hiện tại

Bạn cũng có thể chèn một bản ghi mới và chỉ rõ cột thời gian sử dụng hàm này.

INSERT INTO user_actions (username, action, action_time)
VALUES ('john_doe', 'login', LOCALTIME());

Lấy các bản ghi với thời gian cụ thể

Nếu bạn muốn truy vấn các bản ghi trong khoảng thời gian nhất định có thể kết hợp với các câu lệnh khác như BETWEEN.

SELECT * FROM user_actions
WHERE action_time BETWEEN '2023-01-01 00:00:00' AND LOCALTIME();

Câu lệnh trên sẽ trả về tất cả các hành động xảy ra từ đầu năm 2023 cho tới thời điểm hiện tại.

So sánh với các hàm khác

MySQL cung cấp nhiều hàm khác với chức năng tương tự như NOW(), CURRENT_TIMESTAMP(), và SYSDATE(). Dù các hàm này có thể trả về kết quả tương đương, sự khác biệt chính nằm ở việc chúng lấy mốc thời gian tại thời điểm nào trong quá trình thực thi câu lệnh.

Ví dụ:

  • NOW()CURRENT_TIMESTAMP() thường cung cấp thời gian lấy từ khi bắt đầu câu lệnh.
  • SYSDATE() cung cấp thời gian thực tại khi nó được gọi.

Ứng dụng của LOCALTIME() đặc biệt hữu ích trong nhiều tình huống khác nhau, nhất là khi cần đồng bộ thời gian hệ thống và thời gian ứng dụng. Việc hiểu và áp dụng thành thạo hàm này sẽ giúp bạn tối ưu và chính xác hơn trong việc quản lý và xử lý dữ liệu thời gian trong cơ sở dữ liệu MySQL.

Comments