筛选数据库中最新的数据,如果距离当前时间超过半个小时就直接去除,否则收集信息

                           

 String sqls="SELECT bs FROM yh WHERE number='"+num+"' ORDER BY TIME DESC LIMIT 1";

这个是根据日期和编号来查询当前最新的一条数据 ;

需求的背景:

在LED大屏上显示当前人员的井下分布情况,由于SOCKET通信,接受大量数据,所以需要根据时间来查询;

如果这个人离开了或者下班了,那么数据就会停留在那个时间点,如果,当前时间-那个时间点>30分钟;大屏幕上就不应该出现这个人的信息了;

思路:

1.查询的不仅仅是基站还有最后一条数据的时间

String sqls="SELECT * FROM yh WHERE number='"+num+"' ORDER BY TIME DESC LIMIT 1";
							 st2=conn2.prepareStatement(sqls);
							 rs2=st2.executeQuery();
							 if(rs2.next()){
								 times=rs2.getString(8);//这个是时间
								 //判断最后一条记录的时间跟当前时间的距离
								 
							    	bs=rs2.getString(2);//这个是基站
							    	
							    }

2.计算时间差

//对每个编号进行最近时间的查询基站
							String sqls="SELECT * FROM yh WHERE number='"+num+"' ORDER BY TIME DESC LIMIT 1";
							 st2=conn2.prepareStatement(sqls);
							 rs2=st2.executeQuery();
							 if(rs2.next()){
								 times=rs2.getString(8);//这个是时间
								 //判断最后一条记录的时间跟当前时间的距离
								  //获取当前的时间
						            Date date=new Date();
						            SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
						 		try {
									Date date1 = formatter.parse(times);
									long l=date.getTime()-date1.getTime();
									long day=l/(24*60*60*1000);
									long hour=(l/(60*60*1000)-day*24);
							 if(hour<=1){
								//如果时间在一个小时之内就采集这个信息
								 bs=rs2.getString(2);//这个是基站 
								 if(num.length()==1){
										num="000"+num;
									}
									else if(num.length()==2){
										num="00"+num;
									}
									else if(num.length()==3){
										num="0"+num;
............

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/83104110