此请求非常有效:
Dim cmd1 As New OleDbCommand("SELECT * FROM table1 WHERE dat_recep > #10/14/2022# ORDER BY dat_recep DESC", conn)
它适用于>
、<
、<>
,但不能用于=
。
它不会生成任何错误,只是返回一个空表。
我不想使用类似的东西:
WHERE dat_recep < #10/15/2022# & dat_recep > #10/13/2022#
知道=
为什么不被接受吗?
=
按预期工作-它只允许与精确日期时间值2022-10-14 00:00:00
匹配的行。dat_recep
包含不同于00:00:00
的时间的任何行都将被过滤掉。
利用索引的一种解决方案是筛选dat_recep
大于或等于2022-10-14
但小于第二天的行。
Dim startInclusive As DateTime = somDate.Date
Dim endExclusive As DateTime = startInclusive.AddDays(1)
Dim sql As String = "SELECT * FROM table1
WHERE dat_recep >= ?
AND dat_recep < ?
ORDER BY dat_recep DESC"
Dim cmd1 As New OleDbCommand(sql, conn)
cmd.Parameters.AddWithValue("@start",startInclusive);
cmd.Parameters.AddWithValue("@end",endExclusive);