选择一个月中每一天的计数

时间:2018-08-25 06:14:12

标签: php mysql

我有一个带有日期列的sms跟踪器数据库,格式为02/25/2018 04:12:52 pm。我想计算每天发送的短信数量以条形图显示。 我只能计算使用此查询“ SELECT count(*)作为来自table其中username ='CTC01'”的user_count的用户发送的短信。如何获得特定月份中每一天的计数数组

2 个答案:

答案 0 :(得分:2)

由于OP的date_columnVARCHAR类型。我们使用STR_TO_DATE函数:

SELECT DATE(STR_TO_DATE(date_column, "%m/%d/%Y %r")), COUNT(*) 
FROM table 
GROUP BY DATE(STR_TO_DATE(date_column, "%m/%d/%Y %r"));

使用DATE函数将datetime表达式转换为日期。然后使用GROUP BY按日期获取COUNT

以防万一,您想按日期获取特定用户的数据(例如: CTC01 )。您可以执行以下操作:

SELECT DATE(STR_TO_DATE(date_column, "%m/%d/%Y %r")), COUNT(*) 
FROM table 
WHERE username = 'CTC01' 
GROUP BY DATE(STR_TO_DATE(date_column, "%m/%d/%Y %r"));

答案 1 :(得分:1)

我看到您的日期格式为'm/d/Y H:i:s'。因此,要获取一个月中每一天的总数,您必须与该月中最短时间和该月中最长时间进行比较。因此,2018年2月的查询为:

SELECT DATE(date_column), COUNT(*) 
FROM jobs
where created_on >= '02/01/2018 00:00:00' and created_on < '03/01/2018 00:00:00'
GROUP BY DATE(date_column);

要获取特定用户,只需在上面的查询中附加一个where子句,如下所示:

SELECT DATE(date_column), COUNT(*) 
FROM jobs
where created_on >= '02/01/2018 00:00:00' and created_on < '03/01/2018 00:00:00' and username = 'CTC01'
GROUP BY DATE(date_column);

编辑 由于日期列为varchar,因此您首先必须将其转换为datetime。因此,请改为运行以下查询:

SELECT DATE(DATE_FORMAT(STR_TO_DATE(date_column, '%c/%e/%Y %H:%i'), '%Y-%m-%d %H:%m:%s')) as Date, COUNT(*) 
FROM jobs
where created_on >= '02/01/2018 00:00:00' and created_on < '03/01/2018 00:00:00'
GROUP BY DATE(DATE_FORMAT(STR_TO_DATE(date_column, '%c/%e/%Y %H:%i'), '%Y-%m-%d %H:%m:%s'));