0

Hibernate を使用して、JAVA アプリから Teradata データベースにデータを挿入しています。今、テーブルに日付列があるので、そこに new 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 に答える