1. 程式人生 > >篩選資料庫中最新的資料,如果距離當前時間超過半個小時就直接去除,否則收集資訊

篩選資料庫中最新的資料,如果距離當前時間超過半個小時就直接去除,否則收集資訊

                           

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