Как преобразовать Календарь в java.sql.Date в Java?

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 для вставки в таблицу.

Ответ 1

Существует метод getTime() (неуверенный, почему он не называется getDate).

Edit: Просто понял, что вам нужен java.sql.Date. Один из ответов, которые используют cal.getTimeInMillis() - это то, что вам нужно.

Ответ 2

Вы попробовали cal.getTime()? Это получает представление даты.

Вы также можете посмотреть на javadoc.

Ответ 3

Используйте stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

Ответ 4

Преобразование легко, установка даты и времени немного сложнее. Вот пример:

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

Ответ 5

Вот простой способ преобразования значений Calendar в экземпляры Date.

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

Date DD = C.getTime();

System.out.println(DD);

Ответ 6

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

Ответ 7

Я нашел, что этот код работает:

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/