首页 > 解决方案 > MySQL - 如何获取过去 7 天的每一天的记录数?

问题描述

我要做的是获取过去 7 天中每一天的记录数,假设我今天有 3 条记录,昨天有 4 条记录,两天前有 2 条记录,等等。

我想要这样的东西:

[12/06/2021] 1
[11/06/2021] 4
[10/06/2021] 3
[09/06/2021] 6
[08/06/2021] 7
[07/06/2021] 2
[06/06/2021] 7

(或者只得到计数,也可以。)

我有一个字段 - message_datetime 保存日期时间。

有没有办法在一个查询中做到这一点?

我做了什么:

select CAST(message_datetime AS DATE),count(message_datetime) from messages group by CAST(message_datetime AS DATE) WHERE message_datetime

它有效,但我想要最后 7 天。谢谢

标签: mysql

解决方案


我一直在等你发布自己的努力,但由于有人已经“抢先”并开始发布答案,所以:

假设表的名称是my_table,然后尝试:

select date(message_datetime) as message_date, count(*) as cnt from my_table
where datediff(curdate(), date(message_datetime)) < 7
group by date(message_datetime)
order by date(message_datetime) desc

更新

message_datetime按照草莓的建议,这里是一个更新的查询,如果是一个索引列,它应该更高效:

select date(message_datetime) as message_date, count(*) as cnt from my_table
where message_date_time >= date_sub(curdate(), interval 6 day)
group by date(message_datetime)
order by date(message_datetime) desc

推荐阅读