0

我们正在使用 Hibernate 将数据从我们的 JAVA 应用程序插入到 Teradata 数据库。现在,表中有一个日期列,所以我们只需将新的 Data() 传递进去并尝试保存它。但它给了我们以下错误:

Caused by: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 14.00.00.13] [Error 5404] [SQLState HY000] Datetime field overflow.
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:307)
    at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(ReceiveInitSubState.java:102)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:302)

以供参考:

我的实体班:

@Temporal(TemporalType.TIMESTAMP)
    @Column(name = "EDW_CREATE_DTM")    
    public Date getEdwCreateDtm() {
        return edwCreateDtm;
    }

在我的服务类中......在插入之前设置值:

someObject.setEdwCreateDtm(new Date());

有没有将日期插入到 teradata 的特定方法?

对此的任何指示都会有帮助。

4

1 回答 1

0

您的目标列是否定义为 TIMESTAMP 或 DATE?

如果将其定义为 TIMESTAMP,您是否尝试插入大于 TIMESTAMP 数据类型精度的时间精度?例如,如果列定义为 TIMESTAMP(0),并且您尝试插入“2012-05-15 14:25:46.125”,则可能会收到溢出错误。您的列需要定义为 TIMESTAMP(3)。

如果将其定义为 DATE,则不支持 TIMESTAMP 的 TIME 部分。Teradata 中的 DATE 数据类型是“yyyy-mm-dd”或可比较的值。

于 2012-05-15T20:31:45.567 回答