2

目前,针对 Microsoft SQL Server 2008 的 jTDS JDBC 驱动程序 (1.2.5) 似乎错误地将 DATE 列的数据类型报告为 NVARCHAR。

对于早期版本的 jTDS 和 SQL Server(2005、2000),它的行为可能相同

  • 是否有任何解决方法不需要切换到不同的驱动程序(例如 Microsoft 自己的驱动程序)或修补 jTDS 驱动程序?

  • 此外,我想避免必须对数据字典(INFORMATION_SCHEMA.COLUMNS 视图等)执行查询以查找数据类型信息(并可能交叉引用“ exec sp_datatype_info ”的输出以检索 SQL数据类型)

快速浏览 jTDS 突出的错误并不能说明这是否会被修复。

这个问题的答案:JDBC - JTDS bug ? 对于日期和时间(x)类型的列,似乎表明这在 SQL Server 2005 中不会发生。

提前致谢。

4

1 回答 1

1

我找到了有条件的解决方案

metaData.getColumnType(columnNumber) == 12

如果满足此条件,则执行查询

SELECT System_Type_Id FROM Sys.Columns WHERE Name = [column name] AND Object_Id = (SELECT Object_Id FROM Sys.Tables WHERE Name = [table name])

因为smalldatetime它会回来58

因为datetime它会回来61

于 2012-07-31T19:07:49.550 回答