使用Hibernate的Teradata DB日期插入错误

时间:2012-05-15 09:12:59

标签: hibernate date insert teradata

我们正在使用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 ??

任何关于此的指示都会有所帮助。

1 个答案:

答案 0 :(得分:0)

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

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

如果将其定义为DATE,则不支持TIMESTAMP的TIME部分。 Teradata中的DATE数据类型为'yyyy-mm-dd'或类似值。