mysql - 在日期列中使用 varchar 数据类型按日期分组
问题描述
SELECT delivery_datetime,SUM(total_bill)
FROM `load_information`
WHERE status='Delivered' AND
delivery_datetime BETWEEN '04-01-2021' AND '04-31-2021'
GROUP BY delivery_datetime
HAVING delivery_datetime BETWEEN '04-01-2021' AND '04-31-2021' ORDER BY delivery_datetime ASC</pre>
load_information表结构
姓名 | 类型 | 整理 交货日期时间 | varchar(255) | latin1_swedish_ci 总帐单 | 浮动(10,2)
我无法将我的delivery_datetime
数据类型更改为date()或其他任何内容,但我需要按delivery_datetime和total_bill列的SUM进行分组。
解决方案
如果您无法将delivery_datetime 转换为日期格式,那么当您尝试在日期操作中使用它时,将会招致显着的性能损失:它不能使用索引并且需要对整个表应用转换函数。话虽如此,这应该做你想做的事:
SELECT str_to_date(delivery_datetime,'%m-%d-%Y') as delivery,SUM(total_bill)
FROM `load_information`
WHERE status = 'Delivered' and str_to_date(delivery_datetime,'%m-%d-%Y') BETWEEN '2021-03-01' AND '2021-04-30'
GROUP BY 1 ORDER BY 1 ASC;
推荐阅读
- jestjs - 如何在模块工厂模拟中使用 resetMocks:true
- c# - 在c#中将图像拆分为n部分并转换为pdf
- apache-spark - 如何从pyspark中的数据框列中获取第一个值和最后一个值?
- sql - 将列更改为行 - Oracle SQL
- python - Python Scapy L2socket.recv 导致无限 PcapTimeoutElapsed 异常
- python - Groupby 之后的多索引,如果只有一个组,则应用
- json - 序列化和反序列化 pandas periodIndex 系列
- json - 使用 JOOQ 将数据插入 postgres 中的 JSON 列
- javascript - 是否可以生成将在文件名中使用的浏览器名称?
- python-3.x - 如何在 Python 3 中将播放列表作为 XML 文件打开为 dict.?