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

Chọn timestamp mới nhất từ nhiều cột timestamp trong MySQL

Tóm tắt

Dùng ORDER BY cot_timestamp DESC LIMIT 1 để lấy hàng có timestamp lớn nhất (mới nhất).

Cú pháp

SELECT cot1, cot2, ... FROM bang ORDER BY cot_timestamp DESC LIMIT 1;

Ví dụ

1. Tạo bảng

CREATE TABLE MostRecentDateDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(10),
    ShippingDate TIMESTAMP
);

2. Dữ liệu

INSERT INTO MostRecentDateDemo (Name, ShippingDate) VALUES
('Larry', DATE_ADD(NOW(), INTERVAL -1 MONTH)),
('Mike', '2018-09-12 19:34:45'),
('Sam', '2017-11-24 14:30:40'),
('Carol', '2019-02-12 11:30:41'),
('David', NOW()),
('John', '2018-12-31 12:59:58');

3. Truy vấn

SELECT Id, Name, ShippingDate 
FROM MostRecentDateDemo 
ORDER BY ShippingDate DESC LIMIT 1;

4. Kết quả (David, NOW mới nhất)

+----+-------+---------------------+
| Id | Name  | ShippingDate        |
+----+-------+---------------------+
| 5  | David | 2019-02-14 17:19:34 |
+----+-------+---------------------+

Mở rộng: MAX trên nhiều cột timestamp

Nếu có nhiều cột timestamp trong cùng hàng (created_at, updated_at, deleted_at) và muốn lấy max của chúng:

SELECT GREATEST(created_at, updated_at, deleted_at) AS latest_ts FROM bang;
-- GREATEST bỏ qua NULL, trả về NULL nếu tất cả NULL

Lưu ý

  • Index trên cột timestamp giúp ORDER BY ... LIMIT 1 rất nhanh (index scan dừng sớm).
  • TIMESTAMP tự động chuyển timezone – lưu ý khi so sánh cross-timezone.
  • DATETIME không chuyển timezone – phù hợp cho log, appointment cục bộ.