Access SQL формат даты несовместим

0

В настоящее время у меня есть таблица в моей базе данных, отслеживающая дату начала и дату окончания службы. Мне нужно сравнить дату, введенную пользователем, чтобы узнать, находится ли она между датой начала и окончания. Моя проблема прямо сейчас заключается в том, что в таблице хранилища доступа, которые начинаются с даты, как DD/MM/YYYY, текстовое поле в моей форме, в которое пользователь помещает свою дату, формируется как DD/MM/YYYY. Однако, как только я попал в VBA и запустил SQL-запрос, он считывает дату как MM/DD/YYYY.

Мой запрос:

SELECT * FROM table WHERE #09/01/2018# BETWEEN startDate AND endDate

Моя тестовая запись:

Таблица:

startDate     endDate      service
08/01/2018    02/02/2018   ABC

Это должно вернуть эту запись, однако, поскольку она читает ее как MM/DD/YYYY это не так. Если я вхожу #13/01/2018# он возвращает запись, поскольку обнаруживает, что 13 является датой и не может быть месяцем. Как я могу исправить это, так что он займет 09/01/2018 и возвращает запись?

Теги:
date
ms-access

2 ответа

0

Если это запрос VBA, ваши наблюдения верны. В дизайнере Query они будут работать должным образом.

Обзор Аллена Брауна здесь отличное объяснение; http://allenbrowne.com/ser-36.html с решениями.

0

В вашем запросе должна использоваться либо "обратная" последовательность США, либо последовательность ISO:

SELECT * FROM table WHERE #2018/01/09# BETWEEN startDate AND endDate

или, если вы построите его из кода:

SearchDate = SomeDateValue
SQL = "SELECT * FROM table WHERE #" & Format(SearchDate, "yyyy\/mm\/dd") & "# BETWEEN startDate AND endDate"

или, если вы всегда ищете сегодня:

SQL = "SELECT * FROM table WHERE Date() BETWEEN startDate AND endDate"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню