统计最近七天的数据访问量 mysql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37758497/article/details/86605495

最近做了一个日志功能,当用户访问接口后,会记录哪个接口,返回结果等信息,

记录请求地址,ip,请求方法,参数和请求时间。没有关联到个人。数据表如下:


现在想做一个统计最近七天的访问接口数量,之前想的有些复杂。

首先获取今天的日期,根据日期查询数量,再查询出近七天的数量。后来发现sql可以直接解决,

CURDATE() 函数返回当前的日期。

curdate()直接返回当天

查询最近七天的访问量,sql如下


select a.click_date as 日期,ifnull(b.count,0) as 数量
			from (
					#查询当天
					SELECT curdate() as click_date
union all
					#前一天
	SELECT date_sub(curdate(), interval 1 day) as click_date
	union all
	SELECT date_sub(curdate(), interval 2 day) as click_date
	union all
	SELECT date_sub(curdate(), interval 3 day) as click_date
	union all
	SELECT date_sub(curdate(), interval 4 day) as click_date
	union all
	SELECT date_sub(curdate(), interval 5 day) as click_date
		union all
	SELECT date_sub(curdate(), interval 6 day) as click_date
	) a left join (
				select date(sendtime) as datetime, count(*) as count
				from t_logs
				group by date(sendtime)
	) b on a.click_date = b.datetime;

查询结果:

后台我使用的是springboot+ssm框架,

因为返回多条数据,就返回list。

mybatis sql

我发现返回结果却是为空

解决:当resulttype改为hashmap时,返回为空的问题完美解决。

截图返回的部分数据

至于为什么是hashmap,我也不是特别清楚。大概是这样,

返回值是HashMap类型,可以理解为动态的创建了一个HashMap集合,以键值对的形式保存从数据库里的返回值,map.put("ID",xxx);    map.put("NAME",xxx);    map.put("COUNT",xxx);

特此记录,供以后参考

 -----   笔者水平有限,如有不严谨的地方,请指教必改。

猜你喜欢

转载自blog.csdn.net/qq_37758497/article/details/86605495