java在使用PreparedStatement读取“smalldatetime”列时返回额外的“.0”
我在SQL Server
中有一个列类型为smalldatetime
的表,我正在使用PreparedStatement
读取/写入表中的数据。我的桌子是这样的:
| date |
+------------------------+
| 2019-11-06 09:48:00 +
| 2019-11-05 07:04:00 +
| ... +
+------------------------+
我正在读date
专栏,内容包括:
String date = rs.getString("date");
在日期结束时,我得到一个额外的.0
:
2019-11-06 09:48:00.0
2019-11-05 07:04:00.0
为什么会这样
# 1 楼答案
底层的
SQL Server
JDBC驱动程序首先将返回的字节转换为GregorianCalendar
,然后基于此GregorianCalendar
对新创建的Timestamp
调用toString
。这会导致后面的.0
mssql-jdbc Conversion Code mssql-jdbc SMALLDATETIME handling
因此,mssql jdbc代码实际执行的是:
JavaDoc Timestamp#toString