Bạn có thể sử dụng HOUR () chức năng:
SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9
Rất tiếc, hiệu suất của truy vấn này sẽ rất kinh khủng , ngay sau khi bạn lướt qua một vài nghìn hàng - các hàm không thể lập chỉ mục, vì vậy, sẽ có toàn bộ bảng quét mỗi khi truy vấn này chạy.
Những gì chúng tôi đã làm trong một tình huống tương tự:chúng tôi đã tạo một cột khác updatetime_hour
, lập chỉ mục nó và điền nó vào chèn (và được cập nhật khi cập nhật); sau đó truy vấn trở nên nhanh chóng:
SELECT * FROM 'table' WHERE `updatetime_hour` = 9
Có, chúng tôi đã chuẩn hóa dữ liệu và quản lý nhiều hơn một chút, nhưng tôi vẫn chưa thấy giải pháp nhanh hơn. (Chúng tôi đã xem xét và đo lường các trình kích hoạt chèn và cập nhật để điền vào updatetime_hour
từ updatetime
, nhưng quyết định chống lại cho hiệu suất; xem chúng có hữu ích cho bạn không.)