2012-02-02 52 views
50
Calendar cal; 
String sql = "INSERT INTO ttable (dt) values (?);" 
//dt is a dateTime field in ttable 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt = setDate(1,cal); //not working 

stmt.execute(); 
stmt.close(); 

Me gustaría convertir cal a un tipo de fecha para insertar en la tabla.Cómo convertir el calendario a java.sql.Date en Java?

+0

presumiblemente querían '' java.sql.Date' y no java.util.Date'? – ArtB

Respuesta

108

Hay un método getTime (no estoy seguro de por qué no se llama getDate).

Editar: Acaba de darse cuenta de que necesita un java.sql.Date. Una de las respuestas que usa cal.getTimeInMillis() es lo que necesita.

26

¿Has probado cal.getTime()? Esto obtiene la representación de la fecha.

Es posible que también quiera ver el javadoc.

+0

Sí, pero sigo necesitando lanzar con (Fecha). – Alex

+0

Eso es porque necesita un java.sql.Date (como dijo James Jithin) y Calendar.getTime() le proporciona un java.util.Date. –

24

Uso stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

9

de conversión es fácil, ajuste de la fecha y el tiempo es un poco difícil. He aquí un ejemplo:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2000); 
cal.set(Calendar.MONTH, 0); 
cal.set(Calendar.DAY_OF_MONTH, 1); 
cal.set(Calendar.HOUR_OF_DAY, 1); 
cal.set(Calendar.MINUTE, 1); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis())); 
1

me encontré con este código funciona:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");  
Calendar calendar = new GregorianCalendar(2013,0,31); 
System.out.println(sdf.format(calendar.getTime())); 

se puede encontrar el resto en este tutorial:
http://www.mkyong.com/java/java-date-and-calendar-examples/

6

aquí es una manera simple de convertir Calendar valores en Date instancias.

Calendar C = new GregorianCalendar(1993,9,21); 

Date DD = C.getTime(); 

System.out.println(DD); 
+0

La pregunta hecha específicamente sobre java.sql.Date. Hay varias respuestas como esta, todas asumiendo java.util.Date. Por supuesto, algunos dirían que darles el mismo nombre era una idea estúpida. – Charles

1

stmt.setDate(1, new java.sql.Date(cal.getTime().getTime()));

Cuestiones relacionadas