如何在MySQL中从字符串类型列提取日期并按年份进行分组?
实现方案
你可以先通过STR_TO_DATE函数将text类型的日期字符串转换为MySQL日期格式,再用YEAR()提取年份后分组即可,适配你给出的月/日/年 时:分格式的SQL示例如下:
-- 替换为你实际的表名,示例是统计每年的航班记录数,可根据需求修改聚合逻辑 SELECT YEAR(STR_TO_DATE(FlightDate, '%c/%e/%Y %k:%i')) AS flight_year, COUNT(*) AS flight_count FROM 你的表名 GROUP BY flight_year;
格式符说明:
%c:匹配不带前导零的月份(适配示例中的7、10格式)%e:匹配不带前导零的日期(适配示例中的25、2格式)%Y:匹配4位数字的年份%k:匹配不带前导零的24小时制小时%i:匹配分钟
异常兼容版本
如果表中存在不符合上述格式的脏数据,可增加校验条件避免转换报错:
SELECT YEAR(STR_TO_DATE(FlightDate, '%c/%e/%Y %k:%i')) AS flight_year, COUNT(*) AS flight_count FROM 你的表名 WHERE STR_TO_DATE(FlightDate, '%c/%e/%Y %k:%i') IS NOT NULL GROUP BY flight_year;
内容的提问来源于stack exchange,提问作者sparklyCode
相关产品推荐
相关产品推荐

