Доступ к SQL-запросу на основе предоставленной пользователем даты возвращает только даты со временем = 0:00:00 - PullRequest
0 голосов
/ 13 ноября 2018

Не найдено ни одного тесно связанного вопроса, поэтому здесь.

Это простая версия моего запроса:

SELECT sampleID, beginDateTime
FROM sample
WHERE DateValue(beginDateTime) = [Enter sample date: ];

Это не возвращает записей, но должно возвращать 3 на основедата, которую я ввел.

Однако эта версия возвращает то, что я ожидаю, все записи, которые соответствуют предоставленной дате и их соответствующим временам.

SELECT sampleID, beginDateTime
FROM sample
WHERE DateValue(beginDateTime) = #2015-5-18#;

Как включить приглашение пользователя, правильно отформатированное в Access SQL, которое будет возвращать соответствующие записи?Примечание: я не знаю VBA.

Также попытался добавить PARAMETER = beginDateTime DateTime; Это, кажется, возвращает все записи и назначает им всю дату, на которую был запрошен пользователь.

Пробовал использовать DateValue в списке параметров:

SELECT sampleID, DateValue(beginDateTime)
FROM sample
WHERE beginDateTime = [Enter sample date: ];

Это только возвращает даты = 0: 00: 00

Я бы хотел, чтобы мой запрос подсказал пользователюдату (без времени) и вернуть все записи с этой датой вместе с их соответствующим временем.

Буду очень признателен за вашу помощь.Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Укажите параметр, используя правильный синтаксис:

PARAMETERS [Enter sample date: ] DateTime;
SELECT sampleID, beginDateTime
FROM sample
WHERE DateValue(beginDateTime) = [Enter sample date: ];

Затем будет принята дата, указанная в формате ваших текущих настроек Windows.

0 голосов
/ 14 ноября 2018

Основываясь на предложении @ Gustav использовать типизированный параметр (что имеет дополнительное преимущество, заключающееся в том, что Access откажется от недопустимой даты):

PARAMETER [Enter sample date: ] DateTime;
SELECT sampleID, beginDateTime
FROM sample
WHERE beginDateTime >= [Enter sample date: ] and beginDateTime < ([Enter sample date: ]+1)

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


Редактировать: Чтобы добиться этого в интерфейсе, просто откройте свой запрос в режиме конструктора, затем перейдите в Проект, Параметры и введите имя и тип данных вашего параметра (s).

0 голосов
/ 14 ноября 2018

Вы можете попробовать преобразовать возвращаемое значение из поля ввода в дату:

SELECT sampleID, beginDateTime
  FROM sample
 WHERE DateValue(beginDateTime) = CDate([Enter sample date: ]);
...