ADODB RecordSet排序日期字段不正确

时间:2018-08-08 10:48:26

标签: sorting vbscript adodb recordset

我有一个import numpy as np L = ['NTP', 'LOS'] df2['NewCol'] = np.where(df2['Alarm'].isin(L), 'Yes', 'No') ,可通过调用ADODB.RecordSetADODB.RecordSet.Open的名称来调用stored procedure

connection

存储过程返回一个称为Dim results As New ADODB.RecordSet results.Open usp_GetSomeDate, connection //... omitted 的日期作为SomeDate,并正确,成功地填充了记录集。

DateTime

然后代码使用此填充的RecordSet并调用ALTER Procedure usp_GetSomeDate AS select SomeDate from foo ,例如

Sort

问题是,然后这种排序似乎是按results.Sort = "SomeDate" 而不是整个SomeDateDay进行排序!例如,如果我有以下内容:

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

由于我确保从SQL存储过程返回的值是DateTime,所以我看不到代码为什么将这些内容排序为DateTime以外的东西,这通常是导致问题的原因,请查看其他答案(其中没有很多)

如何更改此设置以确保排序为01/03/2017 06:32:12 08/04/2018 09:23:23 04/07/2018 12:43:23

1 个答案:

答案 0 :(得分:0)

正如@Theo所指出的,CursorLocation上的RecordSet属性需要设置为adUseClient

Dim results As New ADODB.RecordSet
results.CursorLocation = adUseClient
results.Open usp_GetSomeDate, connection //... omitted

另外,重要的是要确保从SQL中选择的字段是DateDateTime,以便记录集按日期而不是字符串排序!