#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/