查询统计当前日期往前推近七天每天的记录数

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。查询统计当前日期往前推近七天每天的记录数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、查询统计当前日期往前推近七天每天的记录数。

并且如果某一天没有数据,则该天不会显示在结果集中,也不会用零值补充

SELECT date_format(create_time, '%Y-%m-%d'), count(*)
FROM your_table
WHERE create_time >= date_sub(curdate(), interval 6 day)
GROUP BY date_format(create_time, '%Y-%m-%d');

其中,your_table 是您需要查询的数据表名称,create_time 是日期字段名。

只显示有数据的日期

在这里插入图片描述

2、统计当前日期往前推近七天每天的记录数,并用零值补充那些没有数据的日期

SELECT 
    DATE_SUB(CURDATE(), INTERVAL seq.seq DAY) AS date,
    COALESCE(COUNT(yt.create_time), 0) AS count
FROM
    (SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
    UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) AS seq
LEFT JOIN your_table yt ON DATE(yt.create_time) = DATE_SUB(CURDATE(), INTERVAL seq.seq DAY)
WHERE
    DATE(yt.create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
GROUP BY date
ORDER BY date;


//----------------------------------------------------------------------------
your_table 替换为您需要查询的表名,create_time 替换为您的日期字段名。

这个查询语句使用了一个子查询 seq 来生成连续的数字序列,然后通过左连接和日期函数来统计每天的记录数。使用 COALESCE 函数来将空值替换为零。结果集将按日期升序排列。

这样,即使某一天没有数据,也会在结果集中显示,并用零值进行补充。

也只显示有数据的日期

在这里插入图片描述

3、统计当前日期零点往前推近七天每天的记录数,并用零值补充那些没有数据的日期

SELECT 
    DATE_FORMAT(date_range.date, '%Y-%m-%d') AS date,
    COALESCE(COUNT(yt.create_time), 0) AS count
FROM
    (SELECT CURDATE() - INTERVAL (seq.seq) DAY AS date
        FROM (SELECT @rownum:=@rownum+1 AS seq
            FROM (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
                  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) r,
                (SELECT @rownum:=0) t) AS seq) AS date_range
LEFT JOIN your_table yt ON DATE(yt.create_time) = date_range.date
GROUP BY date
ORDER BY date;

//-----------------------------
your_table 替换为您需要查询的表名,create_time 替换为您的日期字段名。

这个查询语句使用了一个子查询 seq 来生成连续的数字序列,然后通过左连接和日期函数来统计每天的记录数。使用 COALESCE 函数将空值替换为零。结果集将按日期升序排序。

这样,即使某一天没有数据,也会在结果集中显示,并用零值进行补充。

没有数据或者时间不存在以”0“ 填充

在这里插入图片描述

4、统计当前日期零点往前推近七天每天的记录数,并用零值补充那些没有数据或者不存在的日期,

SELECT 
    DATE_FORMAT(date_range.date, '%Y-%m-%d') AS date,
    COALESCE(COUNT(yt.create_time), 0) AS count
FROM
    (SELECT CURDATE() - INTERVAL (seq.seq) DAY AS date
        FROM (SELECT @rownum:=@rownum+1 AS seq
            FROM (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
                  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) r,
                (SELECT @rownum:=0) t) AS seq) AS date_range
LEFT JOIN your_table yt ON DATE(yt.create_time) = date_range.date
WHERE
    date_range.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 DAY) AND CURDATE()
GROUP BY date
ORDER BY date;



//--------------------------

将 your_table 替换为您需要查询的表名,create_time 替换为您的日期字段名。

这个查询语句使用了一个子查询 seq 来生成连续的数字序列,然后通过左连接和日期函数来统计每天的记录数。使用 COALESCE 函数将空值替换为零。结果集将按日期升序排序。

在查询的 WHERE 子句中,我们只选择那些在过去七天内的日期。如果某一天没有数据或者不存在,也会在结果集中显示,并用零值进行补充。

注意:在这个查询中,我们使用的是 CURDATE() 而不是 CURRENT_TIMESTAMP,因为 CURDATE() 表示的是当天零点的日期,而 CURRENT_TIMESTAMP 表示的是当前时间。

没有数据或者时间不存在以”0“ 填充

在这里插入图片描述

5、查询当前日期往前推6个小时的每个小时的记录数,并且在某个时间不存在时显示零值

sqlCopy CodeSELECT 
    hours.hour AS hour,
    COUNT(your_table.date_column) AS count
FROM 
    (
        SELECT 
            (DATE_SUB(DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d %H:00:00'), INTERVAL numbers.i HOUR)) AS hour
        FROM 
            (SELECT 0 AS i UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) AS numbers
    ) AS hours
LEFT JOIN 
    your_table ON DATE_FORMAT(your_table.date_column, '%Y-%m-%d %H:00:00') = hours.hour
WHERE 
    hours.hour >= DATE_SUB(DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y-%m-%d %H:00:00'), INTERVAL 6 HOUR)
GROUP BY 
    hours.hour
ORDER BY 
    hours.hour;

请将上述查询中的your_table替换为你实际的表名,date_column替换为你的日期或时间戳列名。

这个查询使用了子查询生成一个临时表hours,其中包含从当前时间往前推6个小时的所有小时。然后,使用左连接将临时表与实际数据表进行关联,通过比较时间戳来匹配记录。使用COUNT()函数统计每个小时的记录数,并通过GROUP BY分组。最后,通过ORDER BY按小时顺序输出结果。

这样,你就可以查询到当前日期往前推近6个小时的每个小时的记录数,并且在时间不存在时显示零值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/188486.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!