Mysql 查詢時間段內的sql優化
一說寫到查詢某個時間段的sql查詢,我們就會使用DATE_FORMAT函數格式化日期字段:
比如查詢某年某月的數據,我們可能常用的方式如下
DATE_FORMAT(pay_time,'%Y-%m')=DATE_FORMAT(now(),'%Y-%m')
但是這樣做會使索引失效,尤其在數據量越來越多的情況,做統計就很慢。
那么有沒有針對年月日時分秒格式的日期字段,在作時間段統計的時候,有沒有一種更高效的方式
呢?
在博主的一番研究下,這里推薦一種方式:
1查詢當天的數據
查詢當天的數據:(年月日時分秒格式)
BETWEEN CURDATE() AND (CURDATE() + INTERVAL 1 DAY - INTERVAL 1 SECOND)
SELECT * FROM base_order
WHERE order_time BETWEEN CURDATE() AND (CURDATE() + INTERVAL 1 DAY - INTERVAL 1 SECOND);
2查詢指定某天的數據
若是查詢指定某天的數據,可以使用以下方式
SET @date = '2023-12-25'; -- 可以是變量或參數SELECT * FROM your_table
WHERE datetime_column >= CONCAT(