java mysql 时间查询_MYSQL实现查询某个时间段内每一天的数据
作者: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实现查询某个时间段内每一天的数据相关推荐
- mysql 时间点_mysql 时间
TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval, datetime_expr1, datetime_expr2) 说明: 返回日期或日期时间表达式 datetime_ ...
- oracle 查询时间点数据_oracle统计时间段内每一天的数据(推荐)
下面给大家介绍oracle统计时间段内每一天的数据,具体sql语句如下所示: 1. 生成1000个随机数 SELECT ROWNUM RN, DBMS_RANDOM.VALUE(0, 1000) RA ...
- [技术]mysql 慢查询时间设置_Mysql 慢查询设置
-- 查询是否设置慢查询 show variables like 'slow_query%'; -- 慢查询时间 -- show variables like 'long_query_time'; ...
- java mysql 分页查询_MySQL分页查询方法及优化
当数据库的数据量很大时,一次性查询结果就会变得很慢,为了提高查询效率,我们可以使用MySQL的分页查询功能.本文就为大家带来MySQL分页查询方法及优化. 推荐阅读: 分页查询方法: 在MySQL中, ...
- mysql 慢查询时间设置_Mysql 慢查询设置
Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为"慢查询& ...
- mysql rand() 子查询_MySQL ------ 子查询(十三)
查询(query):任何SQL 都是查询,但此术语一般指select 语句 子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持. 接下来得就比较有意思了,需要你对于表 ...
- mysql续型_mysql续集(查询部分)
mysql> select goods_name,goods_id, concat("HTC",substring(goods_name,4)) as name from g ...
- mysql查找 提速_MySQL加速查询速度的独门武器:查询缓存
[导读] 与朋友或同事谈到mysql查询缓存功能的时候,个人喜欢把Query Cache比作荔枝,是非常营养的东西,但是一次性吃太多了,就容易导致上火而流鼻血,虽然不是特别恰当的比喻,但是有很多相似的 ...
- mysql 内嵌查询_mysql嵌套查询_MySQL
mysql嵌套查询_MySQL 一:创建ecs_goods表插入以下数据: +----------+------------------------------+--------+---------- ...
最新文章
- SAP SD买十送一的业务处理与系统实现
- Android中获取定位经纬度信息
- 在c#中将debug/release下文件打包成一个可直接运行exe文件
- react 组件构建_让我们用100行JavaScript构建一个React Chat Room组件
- linux 一些常用到的命令。
- 基于JAVA+SpringBoot+Mybatis+MYSQL的医药进销存管理系统
- mysql中gbk编码汉字和英文_MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题...
- L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
- java设计模式-Observe
- Lua 可变参数之arg与select
- 3月25日 编译的四个过程
- 登录注册HTML页面代码
- 易之风门诊收费系统 v1.0 官方
- linux关闭防火墙安装Vmware tools
- mysql表达式转字符串_[转载]MYSQL 字符串操作[]
- Xposed 之旅 -- 让微信低版本也可以登录
- 猫眼电影Top100爬取
- 条码扫描器的安装方法与使用注意事项
- i511400h和r55600h哪个好
- 俄罗斯方块java_编程练习——俄罗斯方块简单版(Java实现)