MySQL中如何将DateTime转为Date并查询指定日期的销售记录?
解决Sales表按指定日期查询记录的问题
修正拼写后的基础查询
你之前的操作因字段名拼写错误(将datetime写成datatime)导致DATE()函数失效,修正拼写后即可实现日期转换与筛选:
SELECT * FROM sales WHERE DATE(datetime) = '2022-09-18';
高性能查询方案(推荐)
如果datetime列存在索引,直接在WHERE子句中使用函数会导致索引失效。改用范围查询可以充分利用索引,提升查询效率:
SELECT * FROM sales WHERE datetime >= '2022-09-18 00:00:00' AND datetime < '2022-09-19 00:00:00';
长期优化方案
如果需要频繁按日期查询,可新增一个存储计算的date类型列(以MySQL为例):
ALTER TABLE sales ADD COLUMN sale_date DATE AS (DATE(datetime)) STORED;
新增列后,可直接通过该列查询,还能为其创建索引进一步优化:
CREATE INDEX idx_sale_date ON sales(sale_date); SELECT * FROM sales WHERE sale_date = '2022-09-18';
内容的提问来源于stack exchange,提问作者Dolev Dublon
相关产品推荐
相关产品推荐

