imu*_*kai 3 sql-server types adodb recordset asp-classic
警告:经典 ASP 领先。:)
我正在处理一个旧的经典 ASP 应用程序,但我遇到了一个奇怪的 ADODB.Recordset 对象。
我有一个包含特定字段的 SQL2012 数据库表。我们称之为AnnoyingField。它在 SQL 中的数据类型是“日期”。
ASP 在表上打开一个带有 SELECT 的 ADODB.Recordset 来收集字段,然后执行一些循环来完成它的工作:
For each Field in rs.Fields
typeid = rs(Field.Name).Type
'do stuff based on type
Run Code Online (Sandbox Code Playgroud)
出于某种原因,AnnoyingField的类型返回为 202 (nvarchar),而不是日期的预期类型之一(133 甚至 7)。这在代码中导致了一些问题。
我用另一个“日期时间”类型的字段进行了测试,记录集代码返回了日期时间字段的预期类型.. 135。
任何人都知道为什么“日期”字段作为 nvarchar 返回?
在这种情况下,可能无法将数据库字段从日期更改为日期时间,即使这可能是获取预期数据的逻辑路径。
日期字段比您的 ADODB 版本新。所以它不明白它得到了什么。
你可以通过使用来振作起来
select convert(datetime, AnnoyingField) from CrazyFuturisticTable
Run Code Online (Sandbox Code Playgroud)
如果您将 ADODB 版本升级到 2.8 和/或使用 SQL Native Client 连接,您也可能会得到正确的结果。显然,我还没有尝试过这个,因为我生活在 2014 年。