Java JDBI查询是否为MSSQL datetimeoffset(4)列返回错误的值?

Java JDBI查询是否为MSSQL datetimeoffset(4)列返回错误的值?,java,sql-server,jdbi,Java,Sql Server,Jdbi,非常奇怪的是,我发现来自MSSQL数据库的JDBI查询返回了类型为datetimeoffset(4)的列的错误值。在数据库中,我只有一行(为了理智起见,我删除了所有其他行) 当我用Java运行下面的代码时,它会打印出2016-01-17 22:12:50.7357-05:00,这与我数据库中的值非常不同。我猜在JDBI的某个地方,它试图将列值解析为DATETIMEOFFSET,但不知怎么搞混了 另外,当我将检索到的值转换为java.sql.Timestamp对象并查看毫秒值时,它大约比当前的Sy

非常奇怪的是,我发现来自MSSQL数据库的JDBI查询返回了类型为
datetimeoffset(4)
的列的错误值。在数据库中,我只有一行(为了理智起见,我删除了所有其他行)

当我用Java运行下面的代码时,它会打印出
2016-01-17 22:12:50.7357-05:00
,这与我数据库中的值非常不同。我猜在JDBI的某个地方,它试图将列值解析为
DATETIMEOFFSET
,但不知怎么搞混了

另外,当我将检索到的值转换为
java.sql.Timestamp
对象并查看毫秒值时,它大约比当前的
System.currentTimeMillis()早2天

tblDao.getRow(1)
@RegisterMapper(RowMapper.class)
公共接口TblDao{
@SqlQuery(“SELET ID,Datetimeoffset FROM tbl,其中ID=:ID”)
Row getRow(@Bind(“id”)长id);
}
公共类行映射器实现ResultsMapper{
@凌驾
公共行映射(int-index、ResultSet-ResultSet、StatementContext-StatementContext)引发SQLException{
对象timestampObj=resultSet.getObject(“CreatedDataTimeOffset”);
system.println(timestampObj)

发现此问题是由于SqlServerDriver造成的。在版本为4.0的计算机上运行时,通过查询返回正确的
日期时间偏移量
值;版本为3.0的计算机返回错误的值

ID | Datetimeoffset 
------------------------------------
1  | 2016-01-19 22:03:17.0309 -05:00
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)