Conversion de date java en horodatage SQL

J’essaie d’insérer java.util.Date après l’avoir converti en java.sql.Timestamp et j’utilise l’extrait suivant:

 java.util.Date utilDate = new java.util.Date(); java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime()); 

Mais cela me donne le sq comme 2014-04-04 13:30:17.533

Est-il possible d’obtenir la sortie sans millisecondes?

Vous pouvez couper les millisecondes à l’aide d’un Calendar :

 java.util.Date utilDate = new java.util.Date(); Calendar cal = Calendar.getInstance(); cal.setTime(utilDate); cal.set(Calendar.MILLISECOND, 0); System.out.println(new java.sql.Timestamp(utilDate.getTime())); System.out.println(new java.sql.Timestamp(cal.getTimeInMillis())); 

Sortie:

 2014-04-04 10:10:17.78 2014-04-04 10:10:17.0 

Jetez un oeil à SimpleDateFormat :

 java.util.Date utilDate = new java.util.Date(); java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime()); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); System.out.println(sdf.format(sq)); 

Le problème est lié à la façon dont vous imprimez les données temporelles.

 java.util.Date utilDate = new java.util.Date(); java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime()); System.out.println(sa); //this will print the milliseconds as the toSsortingng() has been written in that format SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(timestamp)); //this will print without ms 

Je suggère d’utiliser DateUtils de la bibliothèque apache.commons.

 long millis = DateUtils.truncate(utilDate, Calendar.MILISECOND).getTime(); java.sql.Timestamp sq = new java.sql.Timestamp(millis ); 
 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println("utilDate:" + utilDate); System.out.println("sqlDate:" + sqlDate); 

Cela me donne la sortie suivante:

  utilDate:Fri Apr 04 12:07:37 MSK 2014 sqlDate:2014-04-04