Неверный синтаксис вокруг datetime2 - PullRequest
0 голосов
/ 15 сентября 2018

Следующий оператор CREATE предназначен для SQL Server:

CREATE TABLE tclientlink 
(
     link_id INT,
     ext_client_id VARCHAR(255),
     goald_address_id VARCHAR(255),
     goald_client_id VARCHAR(255),
     instance_id VARCHAR(255),
     source_id VARCHAR(255),
     timestamp DATETIME2
);

Оператор INSERT

INSERT INTO TCLIENTLINK(link_id, ext_client_id, goald_address_id, goald_client_id, instance_id, source_id, timestamp) 
VALUES (13582, "0000059811", "3037260", "0000059811", "1", "1", 2018-08-22 15:13:34);

Но когда я пытаюсь проверить это с помощью онлайн-инструмента, я получаюследующее сообщение об ошибке:

В вашем синтаксисе SQL есть ошибка;кажется, что ошибка примерно в следующем: 'datetime2)'

Какие изменения мне нужно внести в мой DDL выше?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

двойная кавычка указывает имя столбца, в результате, если вы используете двойную кавычку, сервер SQL будет искать этот столбец по имени, поэтому в случае значения вы должны использовать одинарную кавычку, а также для значения столбца datetime.поэтому рабочий запрос ниже

CREATE TABLE tclientlink 
(
     link_id INT,
     ext_client_id VARCHAR(255),
     goald_address_id VARCHAR(255),
     goald_client_id VARCHAR(255),
     instance_id VARCHAR(255),
     source_id VARCHAR(255),
     timestamp DATETIME2
);

INSERT INTO TCLIENTLINK(link_id, ext_client_id, goald_address_id, goald_client_id, instance_id, source_id, timestamp) 
VALUES (13582, '0000059811', '3037260', '0000059811', '1', '1', '2018-08-22 15:13:34');
0 голосов
/ 15 сентября 2018

Ваш оператор вставки может быть таким.

использовать ' вместо " для строкового значения, а datetime2 должен использовать ', содержать его.

INSERT INTO TCLIENTLINK(link_id, ext_client_id, goald_address_id, goald_client_id, instance_id, source_id, timestamp) VALUES(13582,'0000059811','3037260','0000059811','1','1', '2018-08-22 15:13:34'); 

sqlfiddle

...