如何在Java中将日历转换为java.sql.Date?
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?
你试过cal.getTime()
?这得到日期表示。
你可能也想看看javadoc。
是的,但我一直需要用(日期)进行投射。 – Alex 2012-02-02 13:09:09
这是因为你需要一个java.sql.Date(就像James Jithin所说的),Calendar.getTime()为你提供了一个java.util.Date。 – 2012-02-02 13:30:41
使用stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))
转换很容易,设定日期和时间是有点棘手。这里有一个例子:
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()));
我发现此代码的工作:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");
Calendar calendar = new GregorianCalendar(2013,0,31);
System.out.println(sdf.format(calendar.getTime()));
你可以找到其余本教程:
http://www.mkyong.com/java/java-date-and-calendar-examples/
下面是Calendar
值转换成一个简单的方法Date
实例。
Calendar C = new GregorianCalendar(1993,9,21);
Date DD = C.getTime();
System.out.println(DD);
关于java.sql.Date的具体问题。有几个这样的答案,都假设java.util.Date。当然,有些人会说这些同样的东西是一个愚蠢的想法。 – Charles 2016-01-21 16:04:15
stmt.setDate(1, new java.sql.Date(cal.getTime().getTime()));
想必你想'java.sql.Date'而不是'java.util.Date'? – ArtB 2014-03-14 14:26:34