目前,针对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 ? For columns of type date and time(x)似乎表明在SQL Server 2005中不会发生这种情况。
提前致谢。
答案 0 :(得分: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
。