Ошибка, если запрос не существует в SQL Server

Что не так с этим следующим запросом? Я не могу найти ошибку. Может ли кто-нибудь помочь мне с этой проблемой?

IF (NOT EXISTS(SELECT * 
               FROM chennai_metro_data 
               WHERE TIME1 ='09:00' AND DATE1 ='1-23-2017')) 
BEGIN 
    INSERT INTO chennai_metro_data 
    VALUES (2021700002,'1-23-2017','09:00',1,0,555555) 
END 
ELSE 
BEGIN 
    UPDATE chennai_metro_data 
    SET CUMFLOW = 555555 
    WHERE TIME1 = '09:00' AND DATE1 = '1-23-2017' 
END

Я получаю эту ошибку:

Сообщение 206, уровень 16, состояние 2, строка 1
Конфликт типов операндов: int несовместим с датой


person Lingaraj    schedule 27.02.2017    source источник
comment
Рекомендуется всегда определять список столбцов, в которые вы вставляете данные при использовании INSERT ..... это помогает избежать многих проблем!   -  person marc_s    schedule 27.02.2017
comment
Кроме того, для строкового представления типов данных даты используйте либо гггг-мм-дд, либо ггггммдд.   -  person Zohar Peled    schedule 27.02.2017
comment
@marc_s работает!! Спасибо. По вашему совету я добавил список столбцов.   -  person Lingaraj    schedule 27.02.2017


Ответы (1)


Рекомендуется всегда определять список столбцов, в которые вы вставляете данные, при использовании INSERT — это помогает избежать множества проблем!

А также: чтобы даты не зависели от языковых и региональных настроек, попробуйте использовать формат ISO-8601 — YYYYMDDD только для дат (без времени) или YYYY-MM-DDTHH:MM:SS для даты и времени.

Итак, попробуйте этот код:

INSERT INTO chennai_metro_data(col1, col2, ...., colN)
VALUES (2021700002, '20170123', '09:00', 1, 0, 555555) 

и замените col1 на colN вашими настоящими именами столбцов из той таблицы, в которую вы хотите вставить данные.

person marc_s    schedule 27.02.2017
comment
Просто добавление, когда у вас есть ошибка несоответствия адата во вставке без перечисленных столбцов, это почти наверняка означает, что столбцы во вставке не находятся в том же порядке, что и столбцы в таблице. Это одна из причин, почему очень важно всегда добавлять список столбцов. Кроме того, иногда люди действительно меняют порядок столбцов в таблицах. Они не должны (потому что тогда вещи ломаются), но они делают. - person HLGEM; 27.02.2017