2016-01-20 60 views
1

非常奇怪,我發現我的MSSQL數據庫中的JDBI查詢返回錯誤的值爲datetimeoffset(4)類型的列。在數據庫中,我有一個單行(我刪除了理智的緣故,所有其他行)JDBI查詢返回MSSQL 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對象,並期待在毫秒值,它是當前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) 

回答

1

發現這個問題是由於SqlServerDriver前約2天。在4.0版本的機器上運行時,查詢返回適當的datetimeoffset值; 3.0版本的機器返回了錯誤的值。