точка с запятой используется символ для завершения оператора SQL.
Вы можете использовать знаки #
в отношении значения даты или использовать функции доступа (ACE, Jet, whatever), отличные от DATETIME
, функции CDATE()
. Как следует из его названия, DATETIME
всегда включает элемент времени, поэтому ваши литературные значения должны отражать этот факт. Формат даты ISO отлично понимается движком SQL.
Лучше не использовать BETWEEN
для DATETIME
в Access: это моделируется с помощью типа с плавающей точкой и в любом случае время континуум;)
DATE
и TABLE
являются зарезервированными словами в стандартах SQL, ODBC и Jet 4.0 (и вероятно, за пределами), поэтому лучше всего избегать имени элементов данных:
Ваши предикаты предлагают открытое представление периодов (где ни дата начала, ни дата окончания не включены в период), что, возможно, является наименее популярным выбором , Это заставляет меня задаться вопросом, если вы имели в виду использовать закрытое открытое представление (где ни дата ее начала включается, но период заканчивается непосредственно перед датой окончания):
SELECT my_date
FROM MyTable
WHERE my_date >= #2008-09-01 00:00:00#
AND my_date < #2010-09-01 00:00:00#;
В качестве альтернативы:
SELECT my_date
FROM MyTable
WHERE my_date >= CDate('2008-09-01 00:00:00')
AND my_date < CDate('2010-09-01 00:00:00');
нормально теперь его работает, большое спасибо –
Приятно видеть людей в очередной раз поставив -1 на правильный ответ, и без добавления комментария, чтобы объяснить, почему – smirkingman
-1. Этот способ выполнения зависит от формата даты по умолчанию: dd/mm/yyyy. В другом ответе используется формат даты ISO. ОП задал вопрос «как мне это сделать» не просто «почему мой sql возвращает неправильный ответ» – Colin