В Access код Database Engine SQL, когда вы необходимо указать, что буквальное значение имеет тип DATETIME
, вы можете явно указать значение DATETIME
или использовать #
символов, чтобы разграничить значение.
Используя явное приведение с использованием CDATE()
функции:
INSERT INTO bs1 (teacher, subject, [date], period)
VALUES ('test', 'test', CDATE('2009-12-31 00:00:00'), 0);
Использования DATETIME
буквального значения:
INSERT INTO bs1 (teacher, subject, [date], period)
VALUES ('test', 'test', #2009-12-31 00:00:00#), 0);
When INSERT
ИНГАМИ значения в столбец типа DATETIME
, если вы не указали явное значение DATETIME
, движок будет неявно пытаться принудить значение к DATETIME
. Литеральное значение «test» не может быть принудительно введено в DATETIME
, и это будет являться источником вашей синтаксической ошибки.
Примечание: Ни одно из вышесказанного не относится к значению NULL
. В Access Database Engine SQL нет способа отбросить значение NULL
на явный тип, например.
SELECT CDATE(NULL)
генерирует сообщение об ошибке «Недопустимое использование NULL». Поэтому, чтобы указать литерал NULL
DATETIME
, просто используйте ключевое слово NULL
.
Это платит, чтобы помнить, что база данных Access Engine имеет только один временный тип данных, будучи DATETIME
(его синонимы DATE
, TIME
, DATETIME
и TIMESTAMP
). Даже если вы явно не укажете элемент времени, результирующее значение будет по-прежнему иметь элемент времени, хотя и неявный. Поэтому лучше всегда быть явным и всегда включать элемент времени при использовании DATETIME
литеральных значений.
В чем проблема?Какую ошибку вы получаете? –
Или просто «Что такое квестон?» –
Синтаксис дает ошибку SQL, если я пытаюсь запустить его непосредственно в MS Access, появляется сообщение с сообщением «Синтаксическая ошибка в инструкции INSERT INTO». – James