Khi đang nghiên cứu vấn đề này, tôi nghĩ sẽ rất tuyệt nếu sửa đổi giải pháp GIỮA để hiển thị một ví dụ cho một ngày không tĩnh / chuỗi cụ thể, mà là một ngày có thể thay đổi, hoặc ngày hôm nay chẳng hạn CURRENT_DATE()
. Điều này SẼ sử dụng chỉ mục trên cột log_timestamp.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Tôi đã thực hiện tính theo giây / micro giây để tránh trường hợp 12 giờ sáng vào ngày hôm sau. Tuy nhiên, bạn cũng có thể thực hiện INTERVAL '1 DAY' thông qua các toán tử so sánh để có cách tiếp cận KHÔNG GIỮA thân thiện với người đọc hơn:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Cả hai cách tiếp cận này sẽ sử dụng chỉ mục và sẽ hoạt động nhanh hơn NHIỀU. Cả hai dường như đều nhanh như nhau.