java连接数据库 查询介于两个时间段内的日志

      最近做了一个酒店管理系统,里面涉及到好多以前没学过的知识,现在就是现学现用。有一个问题困惑了我好久,上网上找也没有特别满意的答案,自己总结并整理了一下。

      问题:如何查询日志中两个时间段的内容?

      我的日志数据表中的字段为:(可以看附件图片)log数据库设计

Log:logId<pk>,userId<fk>enterId<fk>,operation(操作),logTime,logRemark

 

这里利用了一个to_date函数,将前台传过来的字符传类型的时间转化成Date类型,注意这里的写法,包括\'要用反斜杠等

	/**
	 * 查询介于两个时间段内的日志
	 * @param startTime,endTime
	 * @throws SQLException
	 */
	public ArrayList<Log> selectLog(String startTime, String endTime){   
		String sql = "select * from log where logtime> to_date(" + "\'" +startTime + "\'" + ",'yyyy/mm/dd')" + 
		" and logtime < to_date(" + "\'" + endTime +"\'"+",'yyyy/mm/dd')"; 
	}

 

这里也可以用timestamp类型,可以精确到时分秒。注意这里的写法。TO_timestamp_tz是将String类型的时间转化成timestamp类型,用于在数据库中进行查询

	/*public ArrayList<Log> selectLog(String startTime, String endTime){
		Timestamp startTs = Timestamp.valueOf(startTime);
		Timestamp endTs = Timestamp.valueOf(endTime);
		String sql = "select * from log where logtime> TO_timestamp_tz(\'" +startTs + "\','yyyy-mm-dd HH24:MI:SS.FF')" +
				" and logtime < TO_timestamp_tz(\'" + endTs + "\','yyyy-mm-dd HH24:MI:SS.FF')";*/

 

  ResultSet rs = this.getRs(sql);
  Log log = new Log();
  ArrayList<Log> logs = new ArrayList<Log>();
  try{
   while(rs.next()){
    log.setLogId(rs.getInt(1));
    log.setUserId(rs.getInt(2));
    log.setEnterId(rs.getInt(3));
    log.setOperation(rs.getString(4));
    log.setLogTime(rs.getDate(5));
    log.setLogRemark(rs.getString(6));
   }
   logs.add(log);
  }catch(SQLException e){
   e.printStackTrace();
  }
  System.out.println("您要的时间短呢所对应的log已经找到");
  for(int i = 0; i< logs.size(); i++){
   System.out.println("logid为:" + logs.get(i).getLogId());
   System.out.println("enterid为:" + logs.get(i).getEnterId());
   System.out.println("operation为:" + logs.get(i).getOperation());
   System.out.println("logtime为:" + logs.get(i).getLogTime());
   System.out.println("logremark为:" + logs.get(i).getLogRemark());
   System.out.println();
  }
  return logs;
 }

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值