篩選資料庫中最新的資料,如果距離當前時間超過半個小時就直接去除,否則收集資訊
阿新 • • 發佈:2018-11-11
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; ............