MYSQL实现查询某个时间段内每一天的数据
作者:luckystar
日期:
比如查询一周内的访问量,页面显示。如图:
好像Mysql没有提供什么函数可以实现这种功能。目前的做法也只能是根据选择的时间段来生成查询参数。一次查询一天的数据。
我的查询方法如下:
public Page getData(TglsFamilyPicStaticsQuery query) { // 得到查询次数 int queryCount = 0; Date begin = query.getStart(); Date end = query.getEnd(); // 页面没有选择开始时间,那么需要从数据库查询第1条记录的时间 if (CommonUtil.isNull(begin)) { begin = tglsFamilyPicActivityDao.getMinDateFromActivityPv(); if (CommonUtil.isNull(begin)) { begin = new Date(); } else { Calendar c = Calendar.getInstance(); c.setTime(begin); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); begin = c.getTime(); } } // 页面没有选择结束时间,那么结束时间等于今天 if (CommonUtil.isNull(end)) { end = new Date(); } // 生成查询条件 queryCount = CommonUtil.compareDay(begin, end); // 计算查询的起止行 int queryStart = query.getPageNumber() > 0 ? (query.getPageNumber() - 1) * query.getPageNumber() : 0; int queryEnd = queryStart + query.getPageSize() -1; // 日间查询段 List
那么, 实际上应该看的出,计算时间段内的天数,循环生成1天的查询条件(beginTime,endTime)。然后查询这1天的数据。
这段代码还包括分页查询,首先计算出要查询时间的起止位置,那么这个起止位置肯定应该是在时间段内的。
比如,pagesize为10,pagenumber=1,那么查询起止位置是0-9。如果查询时间段为2015.01.01 ~ 2015.01.05,那么实际上是有5天时间的间隔。
因为最终是每天1条数据,所以总共有5条数据,如此最终会查出5条数据。
记录这个主要是为以后遇到同样的问题提供参考。
作者:qincidong
出处:http://qincidong.github.io/blog/2015/02/10/mysql-query-everyday.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处:http://qincidong.github.io/blog/2015/02/10/mysql-query-everyday.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。