请求修改MySQL查询以显示2021年至今全部电力数据月份(适配Grafana)
问题分析
你的查询只返回2021年12月至2022年11月数据的核心原因是仅按月份分组,不同年份的同一个月(比如2021年12月和2022年12月)会被合并成一组,同时SELECT的Time字段没有统一为年月维度的时间标识,导致Grafana无法正确展示跨年度的时间序列。
修改后的查询语句
SELECT -- 将时间格式化为每个年月的起始日期(如2021-12-01),让Grafana正确识别时间轴 DATE_FORMAT(STR_TO_DATE(`Time`, "%Y-%m-%d"), "%Y-%m-01") AS "time", SUM(Rate/800) AS kWh FROM Log -- 按年份和月份组合分组,确保每个年月是独立的统计单元 GROUP BY YEAR(STR_TO_DATE(`Time`, "%Y-%m-%d")), MONTH(STR_TO_DATE(`Time`, "%Y-%m-%d")) -- 按时间排序,保证结果按年月顺序展示 ORDER BY "time" ASC
关键修改点说明
- 补充年份分组维度:新增
YEAR(...)到GROUP BY中,避免不同年份的同月数据被合并。 - 统一时间标识:用
DATE_FORMAT将每组的时间转为当月第一天,确保Grafana能正确解析为时间序列节点。 - 排序优化:添加
ORDER BY保证结果按时间顺序排列,符合Grafana的展示逻辑。
如果你的Time字段本身是MySQL的DATE或DATETIME类型,可以简化查询,去掉STR_TO_DATE转换:
SELECT DATE_FORMAT(`Time`, "%Y-%m-01") AS "time", SUM(Rate/800) AS kWh FROM Log GROUP BY YEAR(`Time`), MONTH(`Time`) ORDER BY "time" ASC
内容的提问来源于stack exchange,提问作者Simon Ridley
相关产品推荐
相关产品推荐

