MySQL 统计最近七天内的数据并按天分组

    **1)查询一定范围内的数据**
    查询最近一天的数据:

    1. select * from table where to_days(column_time) = to_days(now());
    2. select * from table where date(column_time) = curdate();

    查询最近一周的数据:

    1. select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);
    2. 语句解析
    3. CURRENT_DATE:以‘YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取决于函数在一个字符串还是数字上下文被使用。select CURTIME();
    4. DATE_SUB(date,INTERVAL expr type) ,进行日期减少的操作,可以精确到秒

    查询最近一个月的数据:

    1. select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);

    2)统计一定范围内,每个单位内的数量【单位可以为天、周、月、年等】
    按天统计:

    1. select DATE_FORMAT(start_time,'%Y%-m-%d') days,count(*) count from xxxx group by days;

    按周统计:

    1. select DATE_FORMAT(start_time,'%Y-%u') weeks,count(*) count from xxxx group by weeks;

    按月统计:

    1. select DATE_FORMAT(start_time,'%Y-%m') months,count(*) count from xxxx group by months;

    3)统计最近七天内的数据并按天分组
    思路:将查询范围的数据作为一张虚表,也就是 统计SQL的数据源即可。

    1. SELECT
    2. DATE_FORMAT( "时间列名", '%Y-%m-%d' ) days,
    3. count(*) count
    4. FROM
    5. (
    6. SELECT * FROM "表名" WHERE DATE_SUB( CURDATE( ), INTERVAL 7 DAY ) <= date( "时间列名")
    7. ) as "表别名"
    8. GROUP BY
    9. days;