Java - создание поля даты оракула - PullRequest
0 голосов
/ 22 апреля 2010

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

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

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

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

Обновление:

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

ТАК, я пробовал следующее:

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

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

Ответы [ 3 ]

3 голосов
/ 22 апреля 2010

Я бы предложил вместо создания строкового запроса (который, я полагаю, вы делаете), вместо этого вы используете 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 голосов
/ 22 апреля 2010

Если вы собираетесь сделать запрос, используя строковую версию даты, вам может потребоваться добавить функцию Oracle to_date. Вы можете сделать это следующим образом (обратите внимание на дополнительные d в 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')";
0 голосов
/ 22 апреля 2010

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

java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...