Точка с запятой используется для завершения оператора SQL.
Вы можете либо использовать #
знаки вокруг значения даты, либо использовать Access (ACE, Jet, что угодно) для приведения к 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');