2015-11-01 57 views
0

我试图从字符串字段更新字段(日期类型)。更新查询(字符串 - >日期)

的字符串字段例如:20/10/2015

我在SQL新。我想这个查询:

UPDATE [dbo].[EmployeeWithCompCar] 
SET [EMER_AttachEndDate] = cast([EMER_info1] as date) 

我得到这个消息:

Conversion failed when converting date and/or time from character string. 

你能帮我解决这个问题?

谢谢!

回答

0

您需要使用convert()格式。所以试试这个:

UPDATE [dbo].[EmployeeWithCompCar] 
    SET [EMER_AttachEndDate] = convert(date, [EMER_info1], 103); 

格式可在documentation

注意:在SQL Server 2012+中,使用try_convert()而不是convert()。这样,如果字符串的格式不正确,结果是NULL而不是错误。

+0

谢谢。 但是,如果字符串是空的它正在更新到1900-01-01。如何改变这个不能从null改变它? – oco

+0

将'EMER_INFO1不为空'添加到'UPDATE'。 –

0

您可以使用格式式样103

UPDATE [DBO].[EMPLOYEEWITHCOMPCAR] 
    SET [EMER_ATTACHENDDATE] = CONVERT(DATE, [EMER_INFO1], 103) 

转换并如果你不空白将被更新为1900-01-01您可以使用NULLIF函数来避免这种情况。

UPDATE [DBO].[EMPLOYEEWITHCOMPCAR] 
    SET [EMER_ATTACHENDDATE] = CONVERT(DATE, NULLIF([EMER_INFO1], ''), 103) 

Date Formats in SQL Server

NULLIF