2013-02-07 195 views
3

我想獲取客戶端到達日期並將其與我的SQL數據庫進行比較,以查看在我的數據庫中是否存在相同的日期。然而,我收到以下錯誤:The operator > is undefined for the argument type(s) java.lang.String, java.lang.StringJava和SQL比較日期

PS我需要不使用SQL查詢

public void makeNewReservation() throws ParseException { 
    // Enter informations 

    System.out.println("Date of arrivel?"); 
    Scanner in = new Scanner(System.in); 
    String date_entree = in.next(); 
    System.out.println("Date of exit? dd/MM/yyyy"); 
    String date_sortiee = in.next(); 
    calculateDaysDifference(date_sortiee, date_entree); 



public void calculateDaysDifference(String date_entree, String date_sortiee) throws ParseException{ 


ConnectionMySQL myConnection=new ConnectionMySQL(); 
    Connection conSQL=myConnection.startDBConnection(); 
    boolean connectionOK=myConnection.checkConnection(conSQL); 

    String query = ("SELECT `START_DATE`,`END_DATE` FROM `room_booking"); 


    //if everything is fine with the connection, i try to execute a query 
    if (connectionOK){ 
     try{ 
      ResultSet mesResultats=myConnection.executeQuery(conSQL, query); 

      //the while loop is just for me to check the dates 
      while (mesResultats.next()) { 
       System.out.println("START_DATE: "+mesResultats.getString(1)+" END_DATE : "+ mesResultats.getString(2)); 


       if (date_entree > mesResultats.getString(1){ 
        System.out.println("cant reserve room room reserved already"); 


       } 
      } 


      // je ferme la connexion 
      conSQL.close(); 

     } 

     catch(SQLException e){ 
      e.printStackTrace(); 


     } 

    } 

my data base

+0

爲什麼你不能在db中比較嗎? –

+0

這很簡單。你有絃樂。你正在試圖將它們比作數字。在這裏:'if(date_entree> mesResultats.getString(1){'或者轉換它們,如果這就是你想要的,或者使用'String.Compare()' – MikeTheLiar

+0

老師想要Java代碼!:) –

回答

3

你需要比較2個日期

1)將輸入字符串到日期

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); 
java.util.Date d=df.format(/*date String*/); 

NOTE: df.format will throw parseException if the String format does not match "yyyy-MM-dd" . I leave it upto you to make sure the date string is of the specified format. 

2)從SQL查詢

java.util.Date sqlDate=new java.util.Date(resultset.getDate().getTime()); 

NOTE : resultset.getDate() will give you java.sql.Date class's object. 

3)Compare 2 dates獲取日期

2

通過java也比較試試這個邏輯評論後

Date date1=new Date(df.parse(mesResultats.getString(1))); 
Date date2=new Date(df.parse(mesResultats.getString(2))); 

int status=date1.compareTo(date2); //compareto is a function defined for date 

if status==0 print same date 
if status<0 print date1 is older then date2 
if status>0 print date1 is newer then date2 

[更新] DateFormat df = new SimpleDateFormat("Format of your date goes here");

+0

我收到了錯誤消息:無法對類型DateFormat –

+0

的非靜態方法解析(字符串)進行靜態引用檢查更新的ans。 。 – Arpit