Проблема в получении дат между 2 датами (vb.net | OLE) - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть база данных (.mdb), и в ней есть столбец с датами (дд / мм / гг), кто-то дает мне код для получения всех дат в базе данных между двумя датами, код был:

Select * from table where date between 'StartDate' and 'EndDate'

но после того, как я использую код, возникает ошибка, которая говорит мне, что типы данных не совпадают

System.Data.OleDb.OleDbException was
 unhandled   ErrorCode=-2147217913  
 Message="عدم تطابق نوع البيانات في
 تعبير المعايير."   Source="Microsoft
 JET Database Engine"

хотя я преобразую тип данных в столбце дат в базе данных в (Дата \ время) и использую объект OLE для подключения к базе данных

что не так и что мне делать?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2009

Вместо использования динамического SQL, вместо этого используйте синтаксис CREATE PROCEDURE SQL DDL модуля доступа к базе данных, чтобы создать постоянный объект, параметры которого имеют параметры со строгим типом DATETIME со значением NULL по умолчанию. Обработайте значение NULL, чтобы использовать вместо него значение столбца DATETIME, например,

CREATE PROCEDURE GetStuff
(
 arg_start_date DATETIME = NULL, 
 arg_end_date DATETIME = NULL 
)
AS
SELECT lastvstart
  FROM tb 
 WHERE lastvstart 
          BETWEEN IIF(arg_start_date IS NULL, lastvstart, arg_start_date)
          AND IIF(arg_end_date IS NULL, lastvstart, arg_end_date);
0 голосов
/ 16 ноября 2009

При работе с Access вам обычно нужно окружать типы даты / времени символом #, например:

#22/01/2009#
...