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

相关问题