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(