2015-02-04 9 views
0

Я пытаюсь вставить дату в базу данных, но я получаю ошибку, поскольку java.util.Date не может быть передан в java.sql.Date. Пожалуйста, помогите.java.util.Date не может быть отнесено к java.sql.Date

String next_dt = req.getParameter("NextDate"); 
DateFormat dtFmt = null; 
dtFmt = new SimpleDateFormat("yyyy-MM-dd"); 
dtToday = (Date) dtFmt.parse(next_dt); 
+0

Это причина 'java.util.Date' не ребенок' java.sql.Date', это наоборот. Я считаю, что вы можете использовать 'new java.sql.Date (dtToday.getTime());' – MadProgrammer

+0

'sqlDate = new Date (javaDate.getTime());' Я думаю, dtToday - это дата, которую вы хотите вставить. вам нужно преобразовать его в sql date – shikjohari

ответ

-1
public static java.sql.Date convertFromJAVADateToSQLDate(
     java.util.Date javaDate) { 
    java.sql.Date sqlDate = null; 
    if (javaDate != null) { 
     sqlDate = new Date(javaDate.getTime()); 
    } 
    return sqlDate; 
} 

Как видно из названия класса такое же использование должно дать полное имя (FQN) обоих классов вы также можете использовать метод форматирования для преобразования даты в соответствующую дату формата SQL.

public static String toMysqlDateStr(Date date) { 
String dateForMySql = ""; 
if (date == null) { 
    dateForMySql = null; 
} else { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    dateForMySql = sdf.format(date); 
} 

return dateForMySql; 

}

2

Вы импортировали java.sql.Data. Но dtFmt.parse(next_dt); возвращает объект типа java.util.Date, так что вы должны изменить

import java.sql.Date; 

в

import java.util.Date; 
+0

Я тоже пробовал, но тогда я не смог вставить dtToday в таблицу. – Kimaya

+0

Если вам нужна дата для операторов sql, вам нужно преобразовать 'java.Util.Date' в' java.sql.Date' См. [Здесь] (http://stackoverflow.com/questions/530012/how- to-convert-java-util-date-to-java-sql-date), как вы можете это сделать. – Jens

0

DateFormat.parse() возвращает java.util.Date, и вы пытаетесь незаконно приводите его к java.sql.Date.

Предполагая, что вы по-прежнему импортировать java.sql.Date, вы можете успешно присвоить переменную следующим образом:

dtToday = new Date(dtFmt.parse(next_dt).getTime()); 
+0

Все еще не в состоянии вставить в базу данных .. – Kimaya

0

Вы должны использовать java.sql.Timestamp или java.sql.Date вместо java.util.Date Проблема с java.sql.Date является то, что он не будет хранить время. Поэтому использование Timestamp - это подход, который я всегда принимаю. Поскольку это дочерний класс java.util.date, он совместим с столбцами даты и времени в БД.

0

Добавить следующие строки - как это должно быть SQL Дата и не Util Дата

java.sql.Date sqlDate = new java.sql.Date(dtToday.getTime()); 
//now insert this sqlDate 
Смежные вопросы