计算MySQl中每月一天的事件数

计算MySQl中每月一天的事件数,mysql,sql,datetime,count,where-clause,Mysql,Sql,Datetime,Count,Where Clause,我想计算一个月中任何一天发生的事件的数量,即从1日到31日。不分月份。这样我就可以知道一个月中什么时候发生的事情最多 通过此查询,我可以获得跨越几个月的特定日期时间上的事件总数 SELECT COUNT(*), DATE(created_at) FROM loan WHERE DATE(created_at) >= DATE('2020-08-01') AND DATE(created_at) <= DATE('2020-12-31') GROUP BY DAT

我想计算一个月中任何一天发生的事件的数量,即从1日到31日。不分月份。这样我就可以知道一个月中什么时候发生的事情最多

通过此查询,我可以获得跨越几个月的特定日期时间上的事件总数

SELECT COUNT(*), DATE(created_at) 
  FROM loan 
 WHERE DATE(created_at) >= DATE('2020-08-01') 
   AND DATE(created_at) <= DATE('2020-12-31') 
 GROUP BY DATE(created_at);
选择计数(*),日期(创建时间)
贷款
其中日期(创建时间)>=日期('2020-08-01')
和日期(创建时间)使用
DAY()
而不是
DATE()

选择日期(创建时),计数(*)
贷款
在>='2020-08-01'和
创建于<'2021-01-01'
按天分组(在创建时);

注意,
WHERE
子句中不需要所有的
DATE()
函数。如果索引可用于
WHERE
条件,则会降低性能。

考虑按
日期()而不是
日期()进行聚合:

选择计数(*),天(创建时)
贷款
其中创建时间>='2020-08-01'和创建时间>'2021-01-01'
按天分组(在创建时);
请注意,我更改了
where
子句,这样就不会对正在筛选的列应用任何函数;这更有效,尤其是如果您在
上创建了一个索引

SELECT DAY(created_at), COUNT(*)
FROM loan
WHERE created_at >= '2020-08-01' AND
      created_at < '2021-01-01'
GROUP BY DAY(created_at);
SELECT COUNT(*), DAY(created_at) 
FROM loan 
WHERE created_at >= '2020-08-01' AND created_at < '2021-01-01'
GROUP BY DAY(created_at);