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;
............