2016-01-20 56 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版本的机器返回了错误的值。