2012-05-07 3 views
0

Я использую инструкцию sql в своей программе.ORA-01843 Недействительный месяц с Oracle SQL

stringBuffer sql=new StringBuffer(); 
sql.append("insert into customer (id,createddate) "); 
sql.append("values (1,"); 
sql.append("'"+new Timestamp(System.currentTimeMillis())+"'"); 

String results=jdbcTemplate.update(sql.toString(); 

, когда я выполняюсь выше команды, я получил это исключение вложенного исключения java.sql.SQLException: ORA-01843: не действительный месяц

я должен связать текущую дату, как я решить Эта проблема.

Спасибо.

+3

Не используйте строковые литералы. Используйте подготовленный оператор и передайте объект Timestamp –

ответ

4

Если вы можете использовать дату в децибелах затем использовать sysdate т.е.

stringBuffer sql=new StringBuffer(); 
sql.append("insert into customer (id,createddate) "); 
sql.append("values (1,sysdate)"); 

Или вы можете добавить to_date к запросу:

stringBuffer sql=new StringBuffer(); 
sql.append("insert into customer (id,createddate) "); 
sql.append("values (1,to_date("); 
sql.append("'"+<your TimeStamp converted to a String like yyyyMMddHHmmss>+"', 'yyyymmddhh24miss'"); 

Или использовать PreparedStatement в here

+0

Привет, cade, sysdate работал хорошо. Спасибо большое –

+0

+1 для решения 'sysdate' –

+0

+1 - Я собирался запустить длинную диаграмму о датах/времени форматирования и т. Д. бла, тогда был серьезный «дох!». момент, когда я прочитал ваш ответ. :-) –

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