sorting - ADODB RecordSet 排序日期字段不正确
问题描述
我有一个ADODB.RecordSet
通过调用ADODB.RecordSet.Open
astored procedure
和connection
Dim results As New ADODB.RecordSet
results.Open usp_GetSomeDate, connection //... omitted
存储过程返回一个称为 a 的日期SomeDate
,DateTime
并正确且成功地填充记录集。
ALTER Procedure usp_GetSomeDate
AS
select SomeDate from foo
然后代码获取这个填充的 RecordSet 并调用Sort
例如
results.Sort = "SomeDate"
问题是这种排序似乎是SomeDate
按Day
而不是整体排序DateTime
!例如,如果我有以下内容:
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 指出的那样,需要将CursorLocation
属性RecordSet
设置为adUseClient
Dim results As New ADODB.RecordSet
results.CursorLocation = adUseClient
results.Open usp_GetSomeDate, connection //... omitted
此外,重要的是要确保从 SQL 中选择的字段是 aDate
或DateTime
这样,以便记录集按日期而不是字符串排序!
推荐阅读
- python - python中使用的min和max函数的输出结果是一样的。为什么?
- python-3.x - 在不使用 for 循环的情况下过滤嵌套列表?
- liquibase - Flyway 或 LiquiBase 可以在当前数据库和最新迁移之间进行区分吗?
- ios - 如何管理相互打开和重新打开的 UIViewController
- typescript - 如何通过打字稿中的泛型类型获取可选参数
- html - 具有固定标题和滚动的表格缩小了单元格大小
- c# - 在 Linq 中使用 Select() 进行异步等待
- javascript - 更改按钮颜色和背景颜色 onclick
- java - 了解异步 Logger 中的环形缓冲区
- c# - 实体框架代码优先迁移失败,更新数据库