gpt4 book ai didi

java.sql.BatchUpdateException : ORA-01849: hour must be between 1 and 12

转载 作者:行者123 更新时间:2023-12-02 08:54:29 26 4
gpt4 key购买 nike

我正在尝试使用 JdbcTemplate 将当前时间戳存储在 Oracle 数据库中。我试图在其中存储两列 timestamp ,但一列是 VARCHAR ,一列是 TIMESTAMP ,但是查看异常,我无法找出它抛出上述错误的列,最好的部分是我的本地计算机没有收到此类错误,但是当我将代码部署到更高的环境时,我遇到了这样的问题。

查询-

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

大写的“HH”设置 1 到 24 之间的小时。“hh”解决了这个问题。

您可以在 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html 中查看有关 SimpleDateFormat 的文档

您可能已允许在本地数据库和服务器号中处理 0 到 24 之间的时间。另一种选择是在该数据库中更改此设置

关于java.sql.BatchUpdateException : ORA-01849: hour must be between 1 and 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60567725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com