×

Lấy ngày và giờ hệ thống với SYSDATE() trong MySQL

Đối với những người quản lý cơ sở dữ liệu hoặc phát triển ứng dụng web, việc quản lý thời gian và ngày tháng là một yếu tố quan trọng để duy trì dữ liệu và thực hiện các tác vụ liên quan đến thời gian. Trong MySQL, một trong những hàm quan trọng nhất để lấy thời gian và ngày tháng hiện tại là SYSDATE().

1. Giới thiệu về SYSDATE()

SYSDATE() là một hàm được tích hợp sẵn trong MySQL dùng để trả về ngày và giờ hiện tại của hệ thống máy chủ. Điều này đồng nghĩa với việc giá trị trả về là thời gian thực khi hàm được gọi. Không giống như NOW(), SYSDATE() cập nhật thời gian ngay tại thời điểm chạy, chứ không phải tại thời điểm khởi tạo câu lệnh.

2. Cú pháp của SYSDATE()

Cú pháp đơn giản để sử dụng SYSDATE() trong MySQL như sau:

SELECT SYSDATE();

Khi bạn chạy câu lệnh này, MySQL sẽ trả về kết quả là ngày và giờ hiện tại của hệ thống.

3. Ứng dụng trong quản lý cơ sở dữ liệu

3.1. Ghi nhật ký

Một ứng dụng phổ biến của SYSDATE() là trong quá trình ghi nhật ký (logging). Khi một sự kiện xảy ra trong ứng dụng hoặc trong cơ sở dữ liệu, bạn có thể sử dụng SYSDATE() để ghi lại thời gian sự kiện đó diễn ra.

INSERT INTO event_log (event_type, event_time)
VALUES ('User Login', SYSDATE());

3.2. Đồng bộ dữ liệu

Trong những hệ thống yêu cầu đồng bộ dữ liệu, việc sử dụng SYSDATE() giúp xác định chính xác thời điểm dữ liệu được cập nhật:

UPDATE data_sync
SET last_sync_time = SYSDATE()
WHERE id = 1;

3.3. Tạo bản sao lưu

Nếu bạn cần tạo các bản sao lưu định kỳ, bạn có thể dùng SYSDATE() để đánh dấu thời gian tạo bản sao lưu:

BACKUP DATABASE mydatabase
TO DISK = '/backups/mydatabase_backup_' + SYSDATE() + '.bak';

4. Sự khác biệt giữa SYSDATE() và NOW()

Mặc dù cả hai hàm SYSDATE() và NOW() đều trả về ngày và giờ hiện tại, nhưng có một điểm khác biệt quan trọng giữa chúng:

  • NOW(): Trả về thời gian tại thời điểm câu lệnh được bắt đầu thực hiện. Điều này có nghĩa là tất cả các giá trị NOW() trong cùng một câu lệnh sẽ giống nhau.

  • SYSDATE(): Trả về thời gian tại thời điểm hàm được gọi. Điều này có nghĩa là mỗi lần SYSDATE() được gọi trong cùng một câu lệnh, giá trị có thể khác nhau đôi chút.

Ví dụ

SELECT NOW(), SLEEP(2), NOW();      -- Cả hai giá trị NOW() sẽ giống nhau
SELECT SYSDATE(), SLEEP(2), SYSDATE(); -- Hai giá trị SYSDATE() sẽ khác nhau

5. Kết luận

SYSDATE() trong MySQL là một công cụ mạnh mẽ và linh hoạt để lấy ngày và giờ hệ thống. Nhờ sự chính xác và tính thời gian thực, SYSDATE() giúp bạn quản lý thời gian và ngày tháng hiệu quả trong các ứng dụng và cơ sở dữ liệu. Bất kể bạn đang ghi nhật ký, đồng bộ dữ liệu hay tạo bản sao lưu, SYSDATE() luôn là sự lựa chọn đáng tin cậy.

Comments