2010-04-22 2 views
0

У меня есть Oracle Date тип, в который мне нужно вставить текущую дату.Java - создание поля даты оракула

Я использую Java для создания этой даты, но все, что я пытался до сих пор yeilds следующее сообщение об ошибке:

java.sql.SQLException: ORA-01843: not a valid month 

Может кто-нибудь предложить Java-код, чтобы создать правильную дату?

Update:

Даты в БД выглядят как 11-DEC-06

Итак, я попытался следующие:

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("d-MMM-yy"); 
String date = sdf.format(cal.getTime()); 

И это не работает

+0

* Что * вы пробовали до сих пор? – Syntactic

ответ

3

Я хотел бы предложить вместо построения строки запроса (который я предполагаю, что вы делаете), вы вместо этого использовать PreparedStatement, который обычно проще (особенно с такими вещами, как это), а также безопаснее:

String rowToUpdate = "foo"; 
PreparedStatement ps = myConnection.prepareStatement(
     "UPDATE my_table SET date_field=? WHERE id=?"); 
Calendar cal = Calendar.getInstance(); 
java.sql.Date sqlDate = new java.sql.Date(cal.getTime().getTime()); 
ps.setDate(1, sqlDate); 
ps.setString(2, rowToUpdate); 
int updated = ps.executeUpdate(); 
+0

Wow thats в значительной степени точный код, в котором я закончил использовать. Я понял это за секунду до того, как вы отправили ... так что я приму свой ответ. благодаря – llm

0

Используйте java.sql.Date или java.sql.Timestamp, в зависимости от ваших требований.

java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime()); 
+0

Да, я просто решил проблему. Вы правы, я использовал PreparedStament, но установил подстановочный знак, используя setString вместо setDate ... и я закончил с использованием java.sql.Date..thanks – llm

0

Если вы собираетесь сделать запрос с использованием строковой версии даты, вам может потребоваться добавить функцию Oracle to_date. Вы можете сделать это следующим образом (обратите внимание на дополнительный д в SimpleDateFormat)

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy"); 
String date = sdf.format(cal.getTime()); 

Тогда в запросе вы положили бы

String query = "select * from table where date_column=to_date('" + date +"','dd-Mon-yy')"; 
Смежные вопросы