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

#java

#java #sql #Календарь

Вопрос:

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

Комментарии:

1. предположительно, вы хотели java.sql.Date , а не java.util.Date ?

Ответ №1:

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

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

Комментарии:

1. это getTime() потому, что он возвращает точное время Wed Dec 05 10:57:35 GMT 03:30 2018 , а не только дату.

2. getTime() возвращает java.util. Дата не java.sql.Date. Вопрос состоял в том, чтобы получить java.sql.Date.

Ответ №2:

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

Возможно, вы также захотите взглянуть на javadoc.

Комментарии:

1. Да, но мне все еще нужно использовать (Date).

2. Это потому, что вам нужен java.sql.Date (как сказал Джеймс Джитин), а Calendar.getTime() предоставляет вам java.util.Date .

Ответ №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);
 

Комментарии:

1. Вопрос конкретно задан о java.sql.Date. Существует несколько ответов, подобных этому, все предполагают java.util.Date. Конечно, некоторые сказали бы, что называть их одним и тем же было глупой идеей.

Ответ №6:

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

Ответ №7:

 Calendar cal = Calendar.getInstance(); //This to obtain today's date in our Calendar var.

java.sql.Date date = new Date (cal.getTimeInMillis());
 

Ответ №8:

Я обнаружил, что этот код работает:

 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/