2016-11-04 2 views
0

Здесь много обсуждений, но то, что я пробовал, не работает. До сих пор в моих таблицах хранить даты как string, но я предполагаю, что это не правильный путь ... Так что я создал таблицу:Дата хранения в SQLite

CREATE TABLE "TRANSACTIONS" (
    "date" DATETIME, 
    ... 
} 

Я хочу, чтобы хранить дату как 2016-11-04 10:50, так что я Применение:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 

Я использую prepared Statements для вставки записей в БД, и когда я пытаюсь сделать это:

stm.setDate(1, timeStamp); 

Я понимаю, что String cannot be converted to Date. Таким образом, я преобразовать его в DATE

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
Date datee = formatter.parse(timeStamp); 

, а затем я получаю java.util.Date cannot be converted to java.sql.Date поэтому я попытался это:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 
java.sql.Date sqlDate = java.sql.Date.valueOf(timeStamp); 

, который, когда я запускаю его, я получаю java.lang.IllegalArgumentException

+0

Вы можете использовать preparedStatement.setTimestamp (новая Отметка (Date.getTime())); –

ответ

0

java.sql.Date представляет собой дата, а не дата и время. Вы получаете эту ошибку, потому что вы передаете "yyyy-MM-dd HH:mm" и бросает java.lang.IllegalArgumentException

String d1 = "2016-10-11"; 
java.sql.Date d = null ; 
d.valueOf(date1); 
System.out.println(d.valueOf(date1)); 

`

Это будет работать без каких-либо исключений. Для вашего требуемого формата вы должны использовать java.sql.Timestamp

 String date1 = "2016-10-11 10:45"; 
    SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
    java.util.Date d2 = sm.parse(date1); 
    Timestamp time = new Timestamp(d2.getTime()); 
    System.out.println(time); 

Выход - 2016-10-11 10:45:00.0

Смежные вопросы