You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel9:如何按年月分组WhereBetween查询并统计金额

解决按年月分组并设置「月份-年份」格式键的问题

要实现按年月分组统计消费总额,同时把数组键改成月份-年份格式,你需要调整查询中的字段选择和分组逻辑,具体修改如下:

修改后的查询代码

$thisyearcolete = colete::query()
    ->whereBetween('created_at', ['2022-10-10', '2022-11-11'])
    ->selectRaw("DATE_FORMAT(created_at, '%m-%Y') as year_month") // 格式化日期为MM-YYYY格式
    ->selectRaw('SUM(totaleuro) as totaleuro')
    ->groupBy('year_month') // 按年月组合字段分组
    ->orderBy('year_month')
    ->pluck('totaleuro', 'year_month') // 用格式化后的年月作为数组键
    ->toArray();

关键修改说明

  • 用DATE_FORMAT(created_at, '%m-%Y')将日期直接格式化为MM-YYYY(如11-2022),替代原来单独提取月份的逻辑,这样能同时包含年份信息,避免不同年份的同月份数据被合并。
  • 分组依据从month改为year_month,确保统计维度是「年月」而非单纯的「月份」。
  • pluck方法指定用year_month作为数组的键,最终输出的数组就会符合你要的格式。

执行后预期结果

^ array:2 [▼
  "10-2022" => "250.00"
  "11-2022" => "450.00"
]

如果你的数据库不支持DATE_FORMAT函数(比如SQL Server),可以改用拼接方式:CONCAT(MONTH(created_at), '-', YEAR(created_at)) as year_month

内容的提问来源于stack exchange,提问作者ballan catalin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:35:17