This request works great:
Dim cmd1 As New OleDbCommand("SELECT * FROM table1 WHERE dat_recep > #10/14/2022# ORDER BY dat_recep DESC", conn)
It works with >
, <
, <>
but not with =
.
It does not generate any error, it just returns a empty table.
I do not want to use something like :
WHERE dat_recep < #10/15/2022# & dat_recep > #10/13/2022#
Any idea why =
is not accepted ?
CodePudding user response:
=
works as expected - it will allow only rows that match the exact datetime value, 2022-10-14 00:00:00
. Any rows whose dat_recep
contains a time different than 00:00:00
will be filtered out.
One solution that takes advantage of indexing is to filter for rows with dat_recep
greater or equal to 2022-10-14
but less than the next day.
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);