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

Cách nhanh nhất tìm kiếm ngày trong MySQL: dùng BETWEEN

Tạo bảng nhân viên

mysql> CREATE TABLE DemoTable1413 (
    -> EmployeeName VARCHAR(20),
    -> EmployeeJoiningDate DATETIME
    -> );
INSERT INTO DemoTable1413 VALUES
('Chris','2018-09-28 11:10:50'),('David','2019-09-28 11:10:50'),
('Mike','2019-09-29 12:40:00'),('Carol','2019-09-28 12:06:10');

Dữ liệu

mysql> SELECT * FROM DemoTable1413;
+--------------+---------------------+
| EmployeeName | EmployeeJoiningDate |
+--------------+---------------------+
| Chris        | 2018-09-28 11:10:50 |
| David        | 2019-09-28 11:10:50 |
| Mike         | 2019-09-29 12:40:00 |
| Carol        | 2019-09-28 12:06:10 |
+--------------+---------------------+

Truy vấn: BETWEEN ngày bắt đầu và kết thúc ngày đó (23:59:59)

mysql> SELECT * FROM DemoTable1413
    -> WHERE EmployeeJoiningDate BETWEEN '2019-09-28' AND '2019-09-28 23:59:59'
    -> LIMIT 1;

Kết quả: David (hàng đầu tiên khớp)

+--------------+---------------------+
| EmployeeName | EmployeeJoiningDate |
+--------------+---------------------+
| David        | 2019-09-28 11:10:50 |
+--------------+---------------------+

Tối ưu: BETWEEN cho phép index range scan. Tránh dùng hàm trên cột (ví dụ DATE(EmployeeJoiningDate) = '2019-09-28') vì làm index không dùng được. LIMIT 1 dừng sớm khi tìm thấy.