更新查询(字符串 - >日期)

时间:2015-11-01 13:20:47

标签: sql sql-server tsql date insert

我尝试从字符串字段更新字段(日期类型)。

字符串字段示例:2015年10月20日

我是sql中的新手。我试过这个问题:

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

我收到此消息:

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

你能帮我解决一下吗?

感谢'!小号

2 个答案:

答案 0 :(得分:0)

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

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

格式可在documentation

中找到

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

答案 1 :(得分:0)

您可以使用格式样式为103的CONVERT。

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