首页 > 解决方案 > SQL 日期范围按月返回多行

问题描述

我希望按月获得条目数。但是,这将返回总计数。

select count(*) from TBL_NAME 
  where (dateAdded between '2020-01-01 00:00:00' and '2020-01-31 23:59:59') or
  (dateAdded between '2020-02-01 00:00:00' and '2020-02-29 23:59:59');

我希望它是这样的。

月 ----- 计数

一月----500

二月----600

如果我不能在那里得到月份,那很好,但我肯定想要它,这样计数就有自己的行。这样的事情是如何实现的?

标签: mysqlsqldategroup-bycount

解决方案


这是一个直接聚合查询,您想计算每个月存在多少条记录。

你可以做:

select
    date_format(dateAdded, '%Y-%m-01') start_of_month,
    count(*) cnt
from tbl_name
where dateAdded >= '2020-01-01' and dateAdded < '2020-03-01'
group by start_of_month

第一列为您提供了汇总数据的月份的第一天 - 这似乎比月份名称更相关。


推荐阅读