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

Truy vấn MySQL lấy bản ghi có ngày bằng ngày hôm nay (CURDATE)

So sánh ngày (bỏ qua giờ) với ngày hiện tại trong MySQL

Khi cột kiểu DATETIME hoặc TIMESTAMP chứa cả ngày và giờ, dùng hàm DATE() để trích xuất phần ngày, so sánh với CURDATE().

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    RegistrationLastDate DATETIME
);

Giả sử ngày hiện tại: 2019-09-03

mysql> INSERT INTO DemoTable VALUES
    ('2019-08-01'),
    ('2019-09-03 09:50:56'),
    ('2019-09-03'),
    ('2019-09-02'),
    ('2019-09-02 09:50:00');

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;

Kết quả:

+----------------------+
| RegistrationLastDate |
+----------------------+
| 2019-08-01 00:00:00  |
| 2019-09-03 09:50:56  |
| 2019-09-03 00:00:00  |
| 2019-09-02 00:00:00  |
| 2019-09-02 09:50:00  |
+----------------------+

3. Truy vấn: Lấy bản ghi ngày = hôm nay

mysql> SELECT * FROM DemoTable
    WHERE DATE(RegistrationLastDate) = CURDATE();

4. Kết quả

+----------------------+
| RegistrationLastDate |
+----------------------+
| 2019-09-03 09:50:56  |
| 2019-09-03 00:00:00  |
+----------------------+

Giải thích:

  • DATE(datetime): Trích xuất phần ngày (bỏ giờ: 09:50:56 → 2019-09-03)
  • CURDATE(): Trả về ngày hiện tại (2019-09-03)
  • So sánh ngày thuần túy, bỏ qua thành phần thời gian

Lưu ý hiệu năng: DATE(col) = CURDATE() không dùng được index trên cột datetime. Tốt hơn dùng range:

WHERE RegistrationLastDate >= CURDATE()
  AND RegistrationLastDate < CURDATE() + INTERVAL 1 DAY