java.sql.BatchUpdateException:ORA-01849:時間は1と12の間でなければなりません

ローレン:

私はJdbcTemplateを使用してOracleデータベースに現在のタイムスタンプを保存しようとしています。そこで私は、店のタイムスタンプにしようとしていた2つの列がありますが、1つの列がVARCHARと1列はTIMESTAMPであるが、私はそれはそれはエラーの上に投げている列に見つけることができません例外に探して、そして最良の部分がオンになっています私のローカルマシンは、私はそのようなエラーを取得していないのですが、私は高く、環境に自分のコードを展開するとき、私はそのような問題に直面しています。

Query-

 String query = "insert into IP_CO_WR2_USR.customer_info "
            + "(EVENT_ID,COMM_CODE,customer_id,REG_ACCOUNT"
            + ",DFMSTATEMENTFLAG,ENVIRONMENT,STATUS,"
            + "INSERT_TIMESTAMP,INSERTED_BY,UPDATE_TIMESTAMP,MODELLINKDATE,"
            + "OCCURANCE_TIMESTAMP,COMM_SOURCE,REPORTENDDATE,MODELID,UAN,BENCHMARKID,"
            + "COUNTER,DFMUAN,RUNTYPE,GENERATED_EVENT_ID)"
            + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 

データ挿入ロジック

        coJdbcTemplate.batchUpdate(query, new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                CustomerInfo tranMessage = batch.get(i);
                ps.setString(8, new SimpleDateFormat("dd-MMM-yy HH.mm.ss")
                        .format(new Date()));
                ps.setString(9, StringConstants.TMTriggerManager);
                ps.setString(10, new SimpleDateFormat("dd-MMM-yy HH.mm.ss")
                        .format(new Date()));

            }

            public int getBatchSize() {
                return batch.size();
            }
        });
ナウエルジアーニ:

あなたはSimpleDateFormatの中に誤った形式を使用しています

ps.setString(8, new SimpleDateFormat("dd-MMM-yy HH.mm.ss").format(new Date()));

あなたは、使用を必要とします:

ps.setString(8, new SimpleDateFormat("dd-MMM-yy hh.mm.ss").format(new Date()));

それは1〜24の「H-H」解き大文字の設定時間で「HH」。

あなたはでてSimpleDateFormatのドキュメントを参照してくださいすることができますhttps://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

あなたのローカルデータベースにしていないサーバーのことで、0〜24の間の時間の取り扱いを許可されている可能性があります。別のオプションは、そのデータベースでこれを変えることであろう

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=31560&siteId=1