ADODB RecordSet 排序日期字段不正确
ADODB RecordSet sorting date field incorrectly
我有一个 ADODB.RecordSet
,它是通过调用 ADODB.RecordSet.Open
传递 stored procedure
和 connection
的名称来填充的
Dim results As New ADODB.RecordSet
results.Open usp_GetSomeDate, connection //... omitted
存储过程 returns 一个名为 SomeDate
的日期作为 DateTime
并且正确并成功地填充了记录集。
ALTER Procedure usp_GetSomeDate
AS
select SomeDate from foo
代码然后获取这个填充的 RecordSet 并调用 Sort
例如
results.Sort = "SomeDate"
问题是 这种排序似乎是按 Day
而不是整个 DateTime
对 SomeDate
进行排序!例如,如果我有以下内容:
04/07/2018 12:43:23
01/03/2017 06:32:12
08/04/2018 09:23:23
并按升序对结果进行排序,我将得到:
01/03/2017 06:32:12
04/07/2018 12:43:23
08/04/2018 09:23:23
而我预期和期望的结果是:
01/03/2017 06:32:12
08/04/2018 09:23:23
04/07/2018 12:43:23
我不明白为什么代码会将这些排序为 DateTime 以外的任何东西,因为我确保从 SQL 存储过程返回的值是 DateTime - 这通常是导致问题的原因, 环顾其他答案(数量不多)
我如何更改它以确保排序为 DateTime
?
正如@Theo 指出的那样,RecordSet
上的 CursorLocation
属性 需要设置为 adUseClient
Dim results As New ADODB.RecordSet
results.CursorLocation = adUseClient
results.Open usp_GetSomeDate, connection //... omitted
此外,重要的是要确保从 SQL 中选择的字段是 Date
或 DateTime
,以便记录集按日期而不是字符串排序!
我有一个 ADODB.RecordSet
,它是通过调用 ADODB.RecordSet.Open
传递 stored procedure
和 connection
Dim results As New ADODB.RecordSet
results.Open usp_GetSomeDate, connection //... omitted
存储过程 returns 一个名为 SomeDate
的日期作为 DateTime
并且正确并成功地填充了记录集。
ALTER Procedure usp_GetSomeDate
AS
select SomeDate from foo
代码然后获取这个填充的 RecordSet 并调用 Sort
例如
results.Sort = "SomeDate"
问题是 这种排序似乎是按 Day
而不是整个 DateTime
对 SomeDate
进行排序!例如,如果我有以下内容:
04/07/2018 12:43:23
01/03/2017 06:32:12
08/04/2018 09:23:23
并按升序对结果进行排序,我将得到:
01/03/2017 06:32:12
04/07/2018 12:43:23
08/04/2018 09:23:23
而我预期和期望的结果是:
01/03/2017 06:32:12
08/04/2018 09:23:23
04/07/2018 12:43:23
我不明白为什么代码会将这些排序为 DateTime 以外的任何东西,因为我确保从 SQL 存储过程返回的值是 DateTime - 这通常是导致问题的原因, 环顾其他答案(数量不多)
我如何更改它以确保排序为 DateTime
?
正如@Theo 指出的那样,RecordSet
上的 CursorLocation
属性 需要设置为 adUseClient
Dim results As New ADODB.RecordSet
results.CursorLocation = adUseClient
results.Open usp_GetSomeDate, connection //... omitted
此外,重要的是要确保从 SQL 中选择的字段是 Date
或 DateTime
,以便记录集按日期而不是字符串排序!