1

非常奇怪的是,我发现我的 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,与我的数据库中的值非常不同的时间。我猜想在 JDBI 的某个地方它试图将列值解析为 aDATETIMEOFFSET并以某种方式感到困惑?

此外,当我将检索到的值转换为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)
4

1 回答 1

1

发现这个问题是由 SqlServerDriver 引起的。当在 4.0 版的机器上运行时datetimeoffset,查询返回了正确的值;3.0 版的机器返回了错误的值。

于 2016-01-20T17:20:57.290 回答