获取24小时内每小时的数据,大家怎么写

比如统计当天每个小时的访客数,大家这种查询会怎么写。

先搞一个24小时每个小时开始和结束的时间戳数组

然后循环获取每个小时的访客数?

讨论数量: 9

定时任务统计每小时的数据,当前小时数据动态查询

1年前 评论
Junwind

按每个小时分段记录,访问进来,判断处于哪个小时内,然后累加即可

1年前 评论

一楼答案最优,另外补充如果计划任务终止,再加一些补偿重新生成,另外如果统计比较简单,不想用计划任务,可以使用mysql函数格式化时间为小时,然后分组,缺失的时间就是0,

1年前 评论
select count(*) num, hour from xxx where xxx
group by date_format(created_at, '%Y-%m-%d %H') hour
1年前 评论

如果小时颗粒度统计数据还是很大,就再拆分,如果不是很大,直接先按小时进行统计,然后再按天维度统计,如果小时的统计异常,还能单独对某个小时的数据进行维护,确保数据没问题

1年前 评论
select count(hour(addtime)), hour(addtime)
from table
group by hour(addtime);
1年前 评论

学到了,我先收藏,调试一下,没这么用过

1年前 评论

1、如果数据量特别较大,就采取闲时统计或者备份数据库统计,减少数据库压力 2、如果数据量小就直接楼上的mysql 分组查询 3、折中的,不大不小的,就在访客记录字段里面加上 year、month、day、hour,虽然多几个字段但是都是数据,还好啦,算是在2的基础上提高查询效率

1年前 评论

如果要求不是很严格,可以用redis HyperLogLog实现,第二天再落库就行了

例子:

//连接Redis数据库
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//获取当前小时数
$hour = date('G');
//将访客IP地址导入HyperLogLog中
$redis->pfAdd('visitor:'.$hour, $_SERVER['REMOTE_ADDR']);
//获取当前小时的访客数
$count = $redis->pfCount('visitor:'.$hour);
echo '当前小时的访客数为:' . $count;
10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!