2014-01-16 6 views
1

В настоящее время я пытаюсь вставить даты в свою локальную базу данных Oracle, вставка написана в java-файле JAR, который использует подстановочные знаки. ВСТАВИТЬ работает, если я посылаю даты утратившим однако при попытке отправить дату, я получаю следующее сообщение об ошибке:Oracle Prepared Statement - ORA-01821: формат даты не распознан

ORA-01821: date format not recognized 

Я выбежала две команды SQL:

SELECT PARAMETER, VALUE FROM v$nls_parameters; 

SELECT CURRENT_TIMESTAMP FROM DUAL; 

которые возвращают эти данные:

PARAMETER              VALUE               
---------------------------------------------------------------- ---------------------------------------------------------------- 
NLS_LANGUAGE              ENGLISH               
NLS_TERRITORY             UNITED KINGDOM             
NLS_CURRENCY              £                 
NLS_ISO_CURRENCY             UNITED KINGDOM             
NLS_NUMERIC_CHARACTERS           .,                
NLS_CALENDAR              GREGORIAN               
NLS_DATE_FORMAT             DD-MON-RR               
NLS_DATE_LANGUAGE            ENGLISH               
NLS_CHARACTERSET             AL32UTF8               
NLS_SORT               BINARY               
NLS_TIME_FORMAT             HH24.MI.SSXFF              
NLS_TIMESTAMP_FORMAT            DD-MON-RR HH24.MI.SSXFF           
NLS_TIME_TZ_FORMAT            HH24.MI.SSXFF TZR             
NLS_TIMESTAMP_TZ_FORMAT           DD-MON-RR HH24.MI.SSXFF TZR          
NLS_DUAL_CURRENCY            €                 
NLS_NCHAR_CHARACTERSET           AL16UTF16               
NLS_COMP               BINARY               
NLS_LENGTH_SEMANTICS            BYTE                
NLS_NCHAR_CONV_EXCP            FALSE                

19 rows selected 

CURRENT_TIMESTAMP     
------------------------------------ 
16-JAN-14 08.03.06.437000000 EUROPE/ 
LONDON 

После глядя на данные выше, я попытался изменить мое подготовленное заявление, чтобы соответствовать метки времени, показано:

TO_TIMESTAMP(?,'DD-MON-RR HH24.MI.SSXFF TZR') 

TO_TIMESTAMP(?,'DD-MON-RR HH24.MI.SSXFF') 

Где? это значение подстановочного знака, которое я передаю с использованием java i.e. interaction.getStartDate();

Кто-нибудь знает, как найти правильный формат или где я иду не так? Я смотрел онлайн последние пару дней, и я полностью озадачен.

+1

Зачем вам нужен формат даты? Форматы даты предназначены для преобразования строк и даты. – MrBackend

+0

Я не контролирую настройки базы данных, и поле было настроено как TIMESTAMP –

+0

. В базе данных уже есть даты в базе данных: 17-JUL-13 15.31.07.000000000 –

ответ

0

Я получил дату, чтобы сохранить в базе данных правильно после некоторых тестов. Формат даты, который я использовал в вызове TO_TIMESTAMP был «DD-ПН-RRRR HH: MI: SS PM», полная вставка показано ниже:

TO_TIMESTAMP(?,'DD-Mon-RRRR HH:MI:SS PM') 
+0

, чтобы найти требуемый формат I System.out.print.строчно напечатал строковое значение даты в моем объекте. –

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