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

So sánh chuỗi DATE với cột DATETIME trong MySQL?

Dùng hàm DATE(cot_datetime) để trích xuất phần ngày (bỏ giờ), sau đó so sánh với chuỗi ngày.

Cú pháp:

SELECT * FROM ten_bang WHERE DATE(cot_datetime) = 'YYYY-MM-DD';

Ví dụ:

CREATE TABLE DateTimeDemo (ArrivalTime DATETIME);
INSERT INTO DateTimeDemo VALUES
(NOW()), (DATE_ADD(NOW(), INTERVAL 2 YEAR)), (DATE_ADD(NOW(), INTERVAL 1 YEAR)),
(DATE_ADD(NOW(), INTERVAL 4 YEAR)), (DATE_ADD(NOW(), INTERVAL -2 YEAR)), (DATE_ADD(NOW(), INTERVAL -1 YEAR));

Dữ liệu (giả sử NOW = 2018-12-06):

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-12-06 10:12:45 |
| 2020-12-06 10:13:10 |
| 2019-12-06 10:13:21 |
| 2022-12-06 10:13:27 |
| 2016-12-06 10:13:42 |
| 2017-12-06 10:13:50 |
+---------------------+

Tìm bản ghi ngày 2022-12-06:

SELECT * FROM DateTimeDemo WHERE DATE(ArrivalTime) = '2022-12-06';

Kết quả

+---------------------+
| ArrivalTime         |
+---------------------+
| 2022-12-06 10:13:27 |
+---------------------+

Hiệu năng: DATE(cot) làm mất index trên cột datetime. Với bảng lớn, nên dùng range:

WHERE cot_datetime >= '2022-12-06 00:00:00' AND cot_datetime < '2022-12-07 00:00:00'

Cách này tận dụng index (SARGable).