1

org.springframework.jdbc.object.SqlUpdate を使用して Date を DB に挿入しています。ローカル テストには HSQL を使用し、サーバーでのテストには Oracle を使用しています。

これは私の SQLUpdate クラスです:

private class SQLInsertHistory extends SqlUpdate implements Serializable {
    private static final long serialVersionUID = 1L;

    public SQLInsertHistory(DataSource ds) {
        setDataSource(ds);
        setSql(INSERT_HISTORY_ENTRY);
        declareParameter(new SqlParameter(Types.DATE)); // EXECUTING_DATE
        declareParameter(new SqlParameter(Types.VARCHAR)); // EXECUTING_USER
        declareParameter(new SqlParameter(Types.VARCHAR)); // FILENAME
        declareParameter(new SqlParameter(Types.VARCHAR)); // MD5_CHECKSUM
        declareParameter(new SqlParameter(Types.INTEGER)); // SUCCESSFULL_FLAG
        declareParameter(new SqlParameter(Types.INTEGER)); // NEW_INSTITUTION_FLAG
        declareParameter(new SqlParameter(Types.VARCHAR)); // FREE_TEXT
        declareParameter(new SqlParameter(Types.VARCHAR)); // ENTRY_TYPE
        compile();
    }

public void insertHistoryEntry(HistoryEntryContainer entry) {

        Object[] values = new Object[] { 
                new java.sql.Date(entry.getDate().getTime()), // EXECUTING_DATE
                entry.getExecutingUser(), // EXECUTING_USER
                entry.getFileName(), // FILENAME,
                entry.getMd5(), // MD5_CHECKSUM
                (entry.isSuccess() ? 1 : 0), // SUCCESSFULL_FLAG
                (entry.isNewInstitution() ? 1 : 0), // NEW_INSTITUTION_FLAG
                entry.getFreeText(), // FREE_TEXT
                entry.getType().toString() };
        update(values);
        log.debug((entry.isSuccess() ? "Successfull " : "Unsuccessfull ")
                + entry.getType().toString() + " of File "
                + entry.getFileName() + " recorded in DB.");
    }

}

現在、実行は正常に機能していますが、常に日付を時間、分、秒 = 0 で保存しています。

4

1 に答える 1

3

Types.DATETIMEのみを含みDATE、TIMEを含まないものを使用しています。Types.TIMESTAMP

使用:new java.sql.Timestamp(entry.getDate().getTime())の場所で時間をタイムスタンプに変換するにはnew java.sql.Date(entry.getDate().getTime()), // EXECUTING_DATE

于 2013-05-29T08:04:02.143 に答える