Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle准备的报表-ORA-01821:无法识别日期格式_Java_Sql_Date_Oracle11g_Wildcard - Fatal编程技术网

Java Oracle准备的报表-ORA-01821:无法识别日期格式

Java Oracle准备的报表-ORA-01821:无法识别日期格式,java,sql,date,oracle11g,wildcard,Java,Sql,Date,Oracle11g,Wildcard,我目前正在尝试将日期插入到本地Oracle数据库中,插入是在使用通配符的java JAR文件中编写的。如果我将日期发送为空,则插入有效。但是,当我尝试发送日期时,会出现以下错误: ORA-01821: date format not recognized 我运行了两个SQL命令: SELECT PARAMETER, VALUE FROM v$nls_parameters; SELECT CURRENT_TIMESTAMP FROM DUAL; 将返回此数据: PARAMETER

我目前正在尝试将日期插入到本地Oracle数据库中,插入是在使用通配符的java JAR文件中编写的。如果我将日期发送为空,则插入有效。但是,当我尝试发送日期时,会出现以下错误:

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()


有没有人知道如何找到正确的格式,或者我哪里出错了?在过去的几天里,我一直在网上搜索,完全感到困惑。

经过一些测试,我得到了正确存储到数据库中的日期。我在TO_时间戳调用中使用的日期格式是“DD Mon rrrrrr HH:MI:SS PM”,完整插入如下图所示:

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

为什么需要日期格式?日期格式用于字符串和日期之间的转换。我不控制数据库设置,并且该字段已设置为时间戳。数据库中已经有日期,其中一个示例是:17-JUL-13 15.31.07.000000000,但JDBC驱动程序应该负责这一点。您只需绑定java.util.Date或java.sql.Date对象(或java.sql.Timestamp,如果您需要几秒钟的时间),JDBC驱动程序应该将其映射到正确的sql语句。顺便说一句,您的示例(17-JUL-13 15.31.07.000000000)没有显示时间戳是如何存储的,只显示了在获取时间戳时时间戳是如何显示的(作为一个sting)。@MrBackend:java.util.Date不能绑定。java.sql.Date表示没有时间的日期,java.sql.Timestamp表示日期和时间。不过,我同意这是正确的解决方案。要找到所需的格式,我需要System.out.打印对象中日期的字符串值。