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

Chciałbym przekonwertować cal na typ daty, aby wstawić do tabeli.Jak przekonwertować kalendarz na java.sql.Date w Javie?

+0

przypuszczalnie chciał 'java.sql.Date' a nie' java.util.Date'? – ArtB

Odpowiedz

108

Istnieje metoda getTime (nie wiem, dlaczego nie nazywa się getDate).

Edycja: Właśnie zdałem sobie sprawę, że potrzebujesz java.sql.Date. Jedną z odpowiedzi, które używają cal.getTimeInMillis() jest to, czego potrzebujesz. ustawienie daty i czasu jest trochę trudne

26

Czy próbowałeś cal.getTime()? Otrzymuje reprezentację daty.

Możesz również chcieć spojrzeć na javadoc.

+0

Tak, ale nadal potrzebuję rzucić przy użyciu (Data). – Alex

+0

To dlatego, że potrzebujesz java.sql.Date (jak powiedział James Jithin) i Calendar.getTime() zapewnia java.util.Date. –

24

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

9

Konwersja jest łatwe. Oto przykład:

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())); 
6

Oto prosty sposób konwertować Calendar wartości do Instancje: Date.

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

Date DD = C.getTime(); 

System.out.println(DD); 
+0

Pytanie zadawane konkretnie na temat java.sql.Date. Jest kilka takich odpowiedzi, wszystkie zakładające java.util.Date. Oczywiście, niektórzy twierdzą, że nazwanie tych samych rzeczy było głupim pomysłem. – Charles

1

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

Powiązane problemy