作者:2015-02-10

比如查询一周内的访问量,页面显示。如图:

好像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> recordsList = new ArrayList>();

Date tmpBeginTime = (Date) begin.clone();

for (int i=0;idateQuery = new HashMap();

// 创建日历对象

Calendar c = Calendar.getInstance();

c.setTime(tmpBeginTime);

// 开始时间

c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 0, 0, 0);

dateQuery.put("beginTime", c.getTime()); // 开始时间

// 结束时间

c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 23, 59, 59);

dateQuery.put("endTime", c.getTime()); // 结束时间

// 查询某一天的数据

Maprecord = tglsFamilyPicActivityDao.findOneDayRecord(dateQuery);

record.put("queryDate",c.getTime());

recordsList.add(record);

// 天数加1

tmpBeginTime = CommonUtil.addDate(tmpBeginTime, 1);

}

}

Page> page = new Page>(query.getPageNumber(), query.getPageSize(), queryCount);

page.setResult(recordsList);

return page;

}

/**

* 判断v是否在min和max之间

*

* @author qincd

* @email qincd@hyxt.com

* @date Feb 9, 2015 11:51:26 AM

*/

private boolean isIn(int v,int min,int max) {

for (int i=min;i<=max;i++) {

if (v == i) return true;

}

return false;

}

那么, 实际上应该看的出,计算时间段内的天数,循环生成1天的查询条件(beginTime,endTime)。然后查询这1天的数据。

这段代码还包括分页查询,首先计算出要查询时间的起止位置,那么这个起止位置肯定应该是在时间段内的。

比如,pagesize为10,pagenumber=1,那么查询起止位置是0-9。如果查询时间段为2015.01.01 ~ 2015.01.05,那么实际上是有5天时间的间隔。

因为最终是每天1条数据,所以总共有5条数据,如此最终会查出5条数据。

记录这个主要是为以后遇到同样的问题提供参考。

java mysql 时间查询_MYSQL实现查询某个时间段内每一天的数据相关推荐

  1. mysql 时间点_mysql 时间

    TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval, datetime_expr1, datetime_expr2) 说明: 返回日期或日期时间表达式 datetime_ ...

  2. oracle 查询时间点数据_oracle统计时间段内每一天的数据(推荐)

    下面给大家介绍oracle统计时间段内每一天的数据,具体sql语句如下所示: 1. 生成1000个随机数 SELECT ROWNUM RN, DBMS_RANDOM.VALUE(0, 1000) RA ...

  3. [技术]mysql 慢查询时间设置_Mysql 慢查询设置

    -- 查询是否设置慢查询 show variables like 'slow_query%'; -- 慢查询时间  -- show variables like 'long_query_time'; ...

  4. java mysql 分页查询_MySQL分页查询方法及优化

    当数据库的数据量很大时,一次性查询结果就会变得很慢,为了提高查询效率,我们可以使用MySQL的分页查询功能.本文就为大家带来MySQL分页查询方法及优化. 推荐阅读: 分页查询方法: 在MySQL中, ...

  5. mysql 慢查询时间设置_Mysql 慢查询设置

    Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为"慢查询& ...

  6. mysql rand() 子查询_MySQL ------ 子查询(十三)

    查询(query):任何SQL 都是查询,但此术语一般指select 语句 子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持. 接下来得就比较有意思了,需要你对于表 ...

  7. mysql续型_mysql续集(查询部分)

    mysql> select goods_name,goods_id, concat("HTC",substring(goods_name,4)) as name from g ...

  8. mysql查找 提速_MySQL加速查询速度的独门武器:查询缓存

    [导读] 与朋友或同事谈到mysql查询缓存功能的时候,个人喜欢把Query Cache比作荔枝,是非常营养的东西,但是一次性吃太多了,就容易导致上火而流鼻血,虽然不是特别恰当的比喻,但是有很多相似的 ...

  9. mysql 内嵌查询_mysql嵌套查询_MySQL

    mysql嵌套查询_MySQL 一:创建ecs_goods表插入以下数据: +----------+------------------------------+--------+---------- ...

最新文章

  1. SAP SD买十送一的业务处理与系统实现
  2. Android中获取定位经纬度信息
  3. 在c#中将debug/release下文件打包成一个可直接运行exe文件
  4. react 组件构建_让我们用100行JavaScript构建一个React Chat Room组件
  5. linux 一些常用到的命令。
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的医药进销存管理系统
  7. mysql中gbk编码汉字和英文_MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题...
  8. L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
  9. java设计模式-Observe
  10. Lua 可变参数之arg与select
  11. 3月25日 编译的四个过程
  12. 登录注册HTML页面代码
  13. 易之风门诊收费系统 v1.0 官方
  14. linux关闭防火墙安装Vmware tools
  15. mysql表达式转字符串_[转载]MYSQL 字符串操作[]
  16. Xposed 之旅 -- 让微信低版本也可以登录
  17. 猫眼电影Top100爬取
  18. 条码扫描器的安装方法与使用注意事项
  19. i511400h和r55600h哪个好
  20. 俄罗斯方块java_编程练习——俄罗斯方块简单版(Java实现)

热门文章

  1. python报时功能_Python(PyS60)实现简单语音整点报时
  2. tcp拥塞算法分析一(拥塞避免和慢启动)
  3. 努比亚红魔5G救砖线刷教程
  4. 武大计算机学院彭敏,彭敏 - 教师简历 CV- 武汉大学计算机学院
  5. EZo UIBuilder 快速打造沪深股市实时行情
  6. 微信分享功能,手机分享图片不显示
  7. OJ2755神器的口袋 普通递归+递推+递推滚动数组
  8. 如何使用 Mac 上自带的「提醒事项」!
  9. 动态参数——arguments
  10. opencv图像处理之图像平移