views:

85

answers:

2

I want to change date format yyyy-mm-dd hh:mm:ss.SSS ( which is stored in database in string format) to mm/dd/yyyy for their comparison

while(rs.next()) 
    {
        reportBean bean=new reportBean();

        String proj_close_date=rs.getString(3);
        String added_on=rs.getString(4);

        DateFormat myDateFormat = new SimpleDateFormat("MM/dd/yyyy");

        DateFormat myDateFormat1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.SSSSSS");

        Date myDate1 = null;    
        Date myDate2 = null;
        Date myDate3 = null;
        Date myDate4 = null;
        Date myDate5 = null;
      try 
        {
          if(proj_close_date==null || proj_close_date.trim().equals(""))
          {
              System.out.println("\n ****** In IF Loop ");
              bean.setCust_code(rs.getString("customer_code"));
              bean.setProject_code(rs.getString("project_code"));
              list.add(bean);
          }
          else
          {
                System.out.println("\n ****** In Else Loop ");
                myDate1 = myDateFormat.parse(proj_close_date);
                myDate2 = myDateFormat.parse(frm_date);
                myDate3 = myDateFormat.parse(to_date);
                myDate5 = myDateFormat1.parse(added_on);                        
                myDate4 = myDateFormat.format(myDate5);

                System.out.println("Project Code ---->"+rs.getString(2));                                           
                System.out.println("Proj_close_date ------>"+myDate1);
                System.out.println("From Date ---->"+myDate2);
                System.out.println("to Date ---->"+myDate3);
                System.out.println("Added_on --->"+myDate4);
                System.out.println("Added_on 1 ie Date 5 ---->"+myDate5);

                if(myDate1.after(myDate2) && myDate1.before(myDate3))  // means --> if(proj_close_date.after(frm_date) && proj_close_date.before(to_date))
                 {                          
                    if(myDate1.after(myDate4))  // means --> if(proj_close_date.after(added_on))
                    {
                        bean.setCust_code(rs.getString("customer_code"));
                        bean.setProject_code(rs.getString("project_code"));
                        list.add(bean);
                    }               
                   else
                   {
                       bean.setCust_code(rs.getString("customer_code"));
                       bean.setProject_code(rs.getString("project_code"));
                       list.add(bean);
                   }  
               }//if    
          }//else

        }//try   
        catch (ParseException e) 
       {
             System.out.println("Invalid Date Parser Exception ");
             e.printStackTrace();
       }


    }
    rs.close();
    stmt.close();

}
catch(SQLException sex)
{
    sex.printStackTrace();
}
finally
{
    closeConnection();
}
+2  A: 

You have set myDateFormat1 to "yyyy-mm-dd hh:mm:ss.SSSSSS". I think the first mm should be in uppercase.

I recommend you check your format strings with the documentation if SimpleDateFormat.

gpeche
A: 

A few notes

  • convention is for Java class names to have each noun capitalised, reportBean becomes ReportBean
  • don't refer to SQL columns by position, always use a name instead rs.getString("customer_code") rather than rs.getString(3)
  • use meaningful variable names, myDate1 becomes closeDate
  • practice debugging your code so you can eliminate System.out.println()
  • gracefully release resources, stmt.close() moves within a finally block
  • use a logging framework, rather than swallowing Exception, e.g. log.error("Invalid Date Parser Exception", e);

Some specific pointers:

new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.SSSSSS") // as already noted, mm is the format for minute, MM is the format for month

myDate4 = myDateFormat.format(myDate5); // invalid as you are asigning a String to a Date

if(myDate1.after(myDate4)) // irrelevant as both if & else block execute the same code

rs.close() // not necessary as closed when `Statement` is closed

see Javadoc

Are you sure that your database schema is all varchar columns? I'd recommend that you fixed that if its the case. Otherwise you can call rs.getDate() instead.

Jon Freedman