-2

I am trying to get date in my database that have format like this "dd/MM/yyyy" and compare them to get latest date..

I was surprised to find that it couldn't do the conversion implicitly or explicitly - but I don't even know how I would do this, as the Java API is still fairly new to me. Any suggestions? It seems like this should be an easy feat to accomplish.

from String last_updatedArr[]'s array result :

12/11/2015
12/11/2015
12/11/2015
12/11/2015
12/11/2015
13/11/2015

Method:

public String latestDate(){

    String last_updated=null;
    try {
        String last_updatedDb=null;

        String query = "SELECT Last_updated FROM Mattress";
        PreparedStatement pst = conn.prepareStatement(query);

        ResultSet rs= pst.executeQuery();

        String last_updatedArr[]=new String[100];
        while(rs.next()){
            int i = 0;
            last_updatedDb=rs.getString("Last_updated");
            System.out.println(last_updatedDb);
            last_updatedArr[i]=last_updatedDb;
            i++;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        java.sql.Date date1,date2;
        for(int i =0;i<last_updatedArr.length;i++){

            date1 = (java.sql.Date)sdf.parse(last_updatedArr[i]);
            date2 = (java.sql.Date)sdf.parse("1/1/2010");

            if(date1.after(date2)){
                //Date1 is after Date2
                last_updated= sdf.format(date1);
            }

            if(date1.before(date2)){
                //Date1 is before Date2
                last_updated= sdf.format(date2);
            }

            if(date1.equals(date2)){
                //Date1 is equal Date2
                last_updated= sdf.format(date1);
            }
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }catch (SQLException e) {
        e.printStackTrace();
    }
    return last_updated;

}
xyhhx
  • 6,384
  • 6
  • 41
  • 64

1 Answers1

0

Your loop resets i on every iteration. Move the declaration of i in your while loop. Or just use a for loop. Like,

for(int i = 0; rs.next(); i++) {
    last_updatedDb = rs.getString("Last_updated");
    System.out.println(last_updatedDb);
    last_updatedArr[i] = last_updatedDb;
}

or something like,

int i = 0;
while(rs.next()){
    // int i = 0;
    last_updatedArr[i] = rs.getString("Last_updated");
    System.out.println(last_updatedArr[i]);
    i++;
}

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date date1,date2;
// reuse i from while loop...
for(i = 0; i < last_updatedArr.length; i++){
Elliott Frisch
  • 198,278
  • 20
  • 158
  • 249