我在SQL Server中有一个查询,检查数据是否已存在于数据库中,如果数据不存在,则会将数据插入数据库。
以下是我的查询:
IF EXISTS
(SELECT
DocumentNo,
DocumentDate,
CustomerAccountName,
PostalName,
RequestedDeliveryDate,
SupplierDocumentNo,
SupplierAccountName,
DispatchName
FROM
SalesOrders
WHERE
(DocumentNo = '0000233555'))
UPDATE SalesOrders
SET RequestedDeliveryDate ='2015-04-16',
SupplierDocumentNo ='',
SupplierAccountName = '',
DispatchName =''
WHERE
(DocumentDate = '0000233555')
ELSE
INSERT INTO SalesOrders (DocumentNo, DocumentDate,
CustomerAccountName, PostalName,
RequestedDeliveryDate, SupplierDocumentNo,
SupplierAccountName, DispatchName)
VALUES ('0000233555', '2015-03-05',
'Company name', 'Company name',
'2015-04-16', '',
'', '')
但是我收到了这个错误。
Msg 241,Level 16,State 1,Line 12
从字符串转换日期和/或时间时转换失败。
以下是表格的设计方法。
column name Data type Allow Null
ID int Unchecked
DocumentNo varchar(50) Checked
DocumentDate date Checked
CustomerAccountName varchar(100) Checked
PostalName varchar(100) Checked
RequestedDeliveryDate date Checked
ShipmentType varchar(50) Checked
Shipped int Checked
Collected int Checked
OrderComplete tinyint Checked
SupplierDocumentNo varchar(100) Checked
SupplierAccountName varchar(100) Checked
DispatchName varchar(100) Checked
HiddenStatus int Checked
我真的不确定为什么我会收到此错误,我们将非常感谢任何帮助
答案 0 :(得分:8)
WHERE(DocumentDate ='0000233555')< - 这一定是错的
答案 1 :(得分:3)
我认为WHERE (DocumentDate = '0000233555')
应为WHERE (DocumentNo = '0000233555')
。这里错字。
答案 2 :(得分:1)
从字符串值比较或插入日期/数据时您必须将其转换为有效的日期/日期时间格式。 SQL Server不知道您以什么格式提供字符串中的日期值。 让他知道您应该使用CAS or CONVERT函数。
修改强>
而且,正如之前发布的那样,你的查询中可能有拼写错误:
(DocumentDate = '0000233555')
应该是
(DocumentNo = '0000233555')