oracle sql 日期错误

oracle sql date errors

我需要你的帮助!

我有一个在 jdbcTemplate 中执行的 sql 查询,如下所示:

public String Insertquery(FichierEclate e) {
            String var="(null)";
            String tableName="TF02_HISTO_"+Country;
            String sql = "INSERT INTO " + tableName + " (TF02TFID, TF02STID, TF02DATE, TF02UID) VALUES (" + e.getAffaireID() + ", 4, TO_TIMESTAMP('" +e.getDate()+ "','yyyy-mm-dd hh24:mi:ss')," + var +")";
            return sql;
        }

那我打个电话:

String Inquery=Insertquery(item);

 vJdbcTemplate.execute(Inquery);

我对更新查询执行了相同的步骤,它运行得非常好!!但是在插入查询中,它显示此错误:

 StatementCallback; SQL [INSERT INTO TF02_HISTO_MN (TF02TFID, TF02STID, TF02DATE, TF02UID) VALUES (25472563, 4, TO_TIMESTAMP('2021-03-01 00:45:00.0','yyyy-mm-dd hh24:mi:ss'),(null))]; ORA-01830: date format picture ends before converting entire input string
; nested exception is java.sql.SQLDataException: ORA-01830: date format picture ends before converting entire input string

我想我不需要 TO_TIMESTAMP 或 TO_DATE 因为 jdbcTemplate 会自动进行转换!! 当我删除 TO_TIMESTAMP 时,出现类型错误:

missing comma

怎么办!!!! 顺便说一句,这个对象:FichierEclate e 使用的是时间戳类型的 属性“日期”,而我使用的是 oracle!这是我的数据库中写入日期的格式示例:

2021-03-01 00:45:00

怎么办?!!!!!!!!!!

来自 this answer,使用绑定变量:

vJdbcTemplate.update(
  "INSERT INTO TF02_HISTO_" + country
    + " ( TF02TFID, TF02STID, TF02DATE, TF02UID ) VALUES ( ?, 4, ?, null )",
  item.getAffaireID(), item.getDate()
);

这就是解决方案!谢谢大家的帮助:)

vJdbcTemplate.update(
  "INSERT INTO TF02_HISTO_" + country
    + " ( TF02TFID, TF02STID, TF02DATE, TF02UID ) VALUES ( ?, 4, ?, null )",
  item.getAffaireID(), item.getDate()
);