MYSQL 统计某时间段内每天的总数

本文介绍了一种使用SQL查询来统计指定月份内每日新增会员数量的方法。通过设置时间范围并按日期分组,可以清晰地展示出一个月内每天的会员增长率。

统计一个月中,每天加入的会员总数

SELECT FROM_UNIXTIME(add_time, '%Y-%m-%e'), COUNT(*) AS count 
FROM member 
WHERE add_time BETWEEN UNIX_TIMESTAMP('2016-1-1 00:00:00') AND UNIX_TIMESTAMP('2016-1-31 00:00:00')
GROUP BY FROM_UNIXTIME(add_time, '%Y%m%e') 
ORDER BY add_time;
可以通过以下几种方式使用 MySQL 按年月查询某一段时间内的数据: - **使用`DATE_ADD`和`DATE_FORMAT`**:可先创建时间列表,再进行筛选。查询数据表组成时间列表的语句如下: ```sql SELECT @cdate := DATE_ADD(@cdate, INTERVAL + 1 MONTH) c_time, t0.id FROM ( SELECT @cdate := DATE_ADD( '2021-01', INTERVAL + 0 MONTH), id FROM time_base ) t0 LIMIT 12; ``` 这里按`MONTH`进行统计,起始日期为`2021-01`,统计 12 个月的数据。`time_base`表可以是任何数据总量足够大于时间列表总数的表,表中有无时间字段不影响结果[^1]。 - **使用`DATE_ADD`和`BETWEEN`**:若要查询`date1`表中特定时间段内的数据,可结合`DATE_ADD`和`BETWEEN`。示例查询语句如下: ```sql select * from date1 where id in (select id from date_info where da between DATE_ADD(now(),interval -5 month) and now()); ``` 这里查询`date1`表中`id`在`date_info`表中日期处于当前日期往前 5 个月到当前日期之间的数据[^2]。 - **使用`str_to_date`和视图**:若日期以`int`型的年、月、日字段存储,可先创建视图将其转换为日期格式,再进行查询。创建视图语句如下: ```sql create view date_info(id,da) as select id,str_to_date(concat(year,'-',month,'-',day),'%Y-%m-%d') from date1; ``` 之后可进行时间段查询,如查询当前日期往前 5 个月到当前日期之间的数据: ```sql select * from date1 where id in (select id from date_info where da between DATE_ADD(now(),interval -5 month) and now()); ``` [^2][^3] - **使用`date_format`和`group by`**:若要按年月统计数据数量,可使用`date_format`和`group by`。示例语句如下: ```sql SELECT count(ArticleId), date_format(FROM_UNIXTIME( `BlogCreateTime`),'%Y%m') sdate FROM `blog_article` group by sdate; ``` 这里按年月统计`blog_article`表中文章的数量,`BlogCreateTime`为文章创建时间字段,以 Unix 时间戳存储,`%Y%m`表示年月格式[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值