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

我想將cal轉換爲插入表的Date類型。如何在Java中將日曆轉換爲java.sql.Date?

+0

想必你想'java.sql.Date'而不是'java.util.Date'? – ArtB 2014-03-14 14:26:34

回答

108

有一個getTime方法(不確定爲什麼它不叫getDate)。

編輯:剛纔意識到你需要一個java.sql.Date。其中一個使用cal.getTimeInMillis()的答案就是你需要的。

26

你試過cal.getTime()?這得到日期表示。

你可能也想看看javadoc。

+0

是的,但我一直需要用(日期)進行投射。 – Alex 2012-02-02 13:09:09

+0

這是因爲你需要一個java.sql.Date(就像James Jithin所說的),Calendar.getTime()爲你提供了一個java.util.Date。 – 2012-02-02 13:30:41

24

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

9

轉換很容易,設定日期和時間是有點棘手。這裏有一個例子:

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

下面是Calendar值轉換成一個簡單的方法Date實例。

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

Date DD = C.getTime(); 

System.out.println(DD); 
+0

關於java.sql.Date的具體問題。有幾個這樣的答案,都假設java.util.Date。當然,有些人會說這些同樣的東西是一個愚蠢的想法。 – Charles 2016-01-21 16:04:15

1

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

相關問題