计算MySQl中每月一天的事件数
我想计算一个月中任何一天发生的事件的数量,即从1日到31日。不分月份。这样我就可以知道一个月中什么时候发生的事情最多 通过此查询,我可以获得跨越几个月的特定日期时间上的事件总数计算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
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);