非常に奇妙なことに、MSSQL データベースからの JDBI クエリが type の列に対して間違った値を返すことがわかりましたdatetimeoffset(4)
。データベースには単一の行があります(健全性のために他のすべての行を削除しました)
ID | Datetimeoffset
------------------------------------
1 | 2016-01-19 22:03:17.0309 -05:00
以下をJavaで実行すると2016-01-17 22:12:50.7357 -05:00
、DBの値とは非常に異なる時間が出力されます。JDBI のどこかで、列の値を解析しようとして、DATETIMEOFFSET
どういうわけか混乱していると思いますか?
また、取得した値をjava.sql.Timestamp
オブジェクトに変換してミリ秒値を見ると、現在の約2日前です。 System.currentTimeMillis()
tblDao.getRow(1)
@RegisterMapper(RowMapper.class)
public interface TblDao {
@SqlQuery("SELET ID, Datetimeoffset FROM tbl WHERE ID = :id")
Row getRow(@Bind("id") Long id);
}
public class RowMapper implements ResultSetMapper<Treatment> {
@Override
public Row map(int index, ResultSet resultSet, StatementContext statementContext ) throws SQLException {
Object timestampObj = resultSet.getObject("CreatedDatetimeoffset");
system.println(timestampObj)