我有一个带有日期列的sms跟踪器数据库,格式为02/25/2018 04:12:52 pm。我想计算每天发送的短信数量以条形图显示。
我只能计算使用此查询“ SELECT count(*)作为来自table
其中username ='CTC01'”的user_count的用户发送的短信。如何获得特定月份中每一天的计数数组
答案 0 :(得分:2)
由于OP的date_column
是VARCHAR
类型。我们使用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'));