2012-02-02 14 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(); 

Vorrei convertire un valore di data in un tipo di data da inserire nella tabella.Come convertire Calendar in java.sql.Date in Java?

+0

presumibilmente si voleva 'java.sql.Date' e non' java.util.Date'? – ArtB

risposta

108

C'è un metodo getTime (non so perché non è chiamato getDate).

Modifica: ho appena realizzato che è necessario un java.sql.Date. Una delle risposte che usano cal.getTimeInMillis() è ciò di cui hai bisogno.

26

Hai provato cal.getTime()? Questo ottiene la rappresentazione della data.

Si potrebbe anche voler guardare il javadoc.

+0

Sì, ma continuo a dover eseguire il cast con (Data). – Alex

+0

Ecco perché è necessario un file java.sql.Date (come ha detto James Jithin) e Calendar.getTime() fornisce un file java.util.Date. –

24

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

9

di conversione è semplice, impostazione della data e l'ora è un po 'difficile. Ecco un esempio:

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

ho trovato questo codice funziona:

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

si può trovare il resto in questo tutorial:
http://www.mkyong.com/java/java-date-and-calendar-examples/

6

Ecco un modo semplice per convertire Calendar i valori in Date istanze.

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

Date DD = C.getTime(); 

System.out.println(DD); 
+0

La domanda specificamente posta su java.sql.Date. Ci sono diverse risposte come questa, tutte assumendo java.util.Date. Certo, alcuni direbbero che nominare questi la stessa cosa è stata un'idea stupida. – Charles

1

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