我目前正在尝试将日期插入到我的本地Oracle数据库中,insert是在使用通配符的java JAR文件中编写的。如果我将日期发送为null,则INSERT有效但是当我尝试发送日期时,我收到以下错误:
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传递的通配符值,即interaction.getStartDate();
有谁知道如何找到正确的格式或我错在哪里?我在网上看了最近几天,我感到非常困惑。
答案 0 :(得分:0)
经过一些测试后,我得到了正确存储到数据库中的日期。我在TO_TIMESTAMP调用中使用的日期格式是'DD-Mon-RRRR HH:MI:SS PM',完整插入如下所示:
TO_TIMESTAMP(?,'DD-Mon-RRRR HH:MI:SS PM')