Sql server SQL Server中的if not exists查询出错

Sql server SQL Server中的if not exists查询出错,sql-server,mssql-jdbc,Sql Server,Mssql Jdbc,以下查询有什么问题?我找不到错误。有人能帮忙吗 你能告诉我这个问题吗 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,

以下查询有什么问题?我找不到错误。有人能帮忙吗 你能告诉我这个问题吗

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
我得到了这个错误:

Msg 206,16级,状态2,第1行
操作数类型冲突:int与日期不兼容


作为最佳实践,在使用
INSERT
时,您应该始终定义要插入的列列表-这有助于避免许多问题

另外:对于日期,要独立于任何语言和区域设置,请尝试使用ISO-8601格式-
yyyyymddd
仅用于日期(无时间),或
YYYY-MM-DDTHH:MM:SS
用于日期和时间

因此,请尝试以下代码:

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

并将
col1
thorugh
colN
替换为要插入数据的表中的实际列名。

最佳做法是,在使用
insert
时,应始终定义要插入的列列表-这有助于避免许多问题

另外:对于日期,要独立于任何语言和区域设置,请尝试使用ISO-8601格式-
yyyyymddd
仅用于日期(无时间),或
YYYY-MM-DDTHH:MM:SS
用于日期和时间

因此,请尝试以下代码:

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

并将
col1
thorugh
colN
替换为要插入数据的表中的实际列名。

最佳做法是,在使用
insert
时,应始终定义要插入的列的列表。。。。。这有助于避免很多问题!此外,对于日期数据类型的字符串表示,请使用yyyy-mm-dd或yyyymmdd。@marc_s it works!!非常感谢。根据您的建议,我已经添加了列列表。作为最佳实践,在使用
INSERT
时,您应该始终定义要插入的列列表。。。。。这有助于避免很多问题!此外,对于日期数据类型的字符串表示,请使用yyyy-mm-dd或yyyymmdd。@marc_s it works!!非常感谢。根据您的建议,我已经添加了列列表。只需添加,当您在没有列出列的insert中出现adat不匹配错误时,几乎可以肯定insert中的列与表中的列顺序不同。这就是为什么始终添加列列表非常重要的原因之一。此外,有时人们实际上会更改表中的列顺序。它们不应该(因为这样东西会断开),但它们会断开。只需添加,当插入中出现adat不匹配错误而未列出列时,几乎可以肯定插入中的列与表中的列的顺序不同。这就是为什么始终添加列列表非常重要的原因之一。此外,有时人们实际上会更改表中的列顺序。他们不应该这样做(因为这样东西就坏了),但他们确实这样做了。