Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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日期的年份异常无效_Java_Oracle_Jdbc - Fatal编程技术网

Java 具有Oracle日期的年份异常无效

Java 具有Oracle日期的年份异常无效,java,oracle,jdbc,Java,Oracle,Jdbc,我正在尝试将日期保存到oracle数据库中 long startTime = System.nanoTime(); java.sql.Date startTimeDisplay = new Date(startTime); PreparedStatement st; String sql = "INSERT INTO J0T_JOB_STATUS (JST_JOB_ID, JST_JOB_CONFIGURATION_ID, JST_STATUS_CD, JST_

我正在尝试将日期保存到oracle数据库中

    long startTime = System.nanoTime();
    java.sql.Date startTimeDisplay = new Date(startTime);

    PreparedStatement st;
    String sql = "INSERT INTO J0T_JOB_STATUS (JST_JOB_ID, JST_JOB_CONFIGURATION_ID, JST_STATUS_CD, JST_START_TM, JST_END_TM, JST_CURR_STEP, JST_STEP_DETAILS, JST_MSG_COLLECTION) "
            + "VALUES(?, ?, ?, ?, ?, ?, ?, ?)";
    st.setDate(4, startTimeDisplay);
这在我们的JUnit测试套件中运行良好,该套件使用HSQL而不是oracle,但使用oracle时,我得到:

    [err] Exception in thread "Thread-15" 
    [err] java.lang.IllegalArgumentException: Invalid year value
    [err]   at oracle.sql.TIMESTAMP.getOracleYear(TIMESTAMP.java:772)
    [err]   at oracle.sql.DATE.toBytes(DATE.java:533)
    [err]   at oracle.sql.DATE.<init>(DATE.java:121)
    [err]   at oracle.jdbc.driver.OraclePreparedStatement.setDate(OraclePreparedStatement.java:8747)
    [err]   at oracle.jdbc.driver.OraclePreparedStatementWrapper.setDate(OraclePreparedStatementWrapper.java:177)
    [err]   at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.setDate(WSJdbcPreparedStatement.java:1333)
etc.

根据Java文档中关于
System.nanoTime()
(我假设是Java7,因为您没有提供Java版本):

此方法只能用于测量经过的时间,不适用于 与系统或挂钟时间的任何其他概念相关。价值 返回表示自某个固定但任意的原点以来的纳秒数 时间(可能在将来,因此值可能为负值)

链接:


我建议改用
System.currentTimeMillis()
,除非您希望最终保持一个负数。

它的可能副本是一个副本。谢谢。:/code>BUG-7243157在尝试使用年份超过9999的日期时引发相应错误。
desc J0T_JOB_STATUS
Name                     Null Type         
------------------------ ---- ------------ 
JST_JOB_ID                    VARCHAR2(50) 
JST_JOB_CONFIGURATION_ID      NUMBER       
JST_STATUS_CD                 VARCHAR2(30) 
JST_START_TM                  TIMESTAMP(6) 
JST_END_TM                    TIMESTAMP(6) 
JST_CURR_STEP                 NUMBER       
JST_STEP_DETAILS              CLOB         
JST_MSG_COLLECTION            CLOB