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

时间:2016-01-20 03:25:33

标签: java sql-server jdbi

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

ID | Datetimeoffset 
------------------------------------
1  | 2016-01-19 22:03:17.0309 -05:00

当我在Java中运行以下内容时,它打印出2016-01-17 22:12:50.7357 -05:00,这是一个与我的数据库中的值非常不同的时间。我猜测在JDBI中的某个地方,它试图将列值解析为DATETIMEOFFSET并以某种方式混淆?

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

之前2天
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 个答案:

答案 0 :(得分:1)

发现此问题是由于SqlServerDriver引起的。在4.0版本的计算机上运行时,查询返回了正确的datetimeoffset值;版本3.0的计算机返回了错误的值。