因为我一开始用最新版本(1.0.29)的Druid,但是在获取数据库时间的时候有问题。
从数据库读取数据,我用统一的方法来执行:
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
String column = JdbcUtils.lookupColumnName(resultSetMetaData, i);
Object value = JdbcUtils.getResultSetValue(resultSet, i);
}
在读取时间的时候,value有明显偏差,我在debug的时候,发现下面的情况:
getValue()方法有时差错误,而且这个时差有13个小时,不知道如何产生的,而getString()方法则正确。
在测试多个可选版本之后,发现29/26/25都存在上述问题。
解决办法
换用低版本的Druid,我测试过1.0.18版本,发现没问题。