2015-11-01 3 views
0

Я пытаюсь обновить поле (тип даты) из поля строки.Update Query (String -> Date)

Пример строки поля: 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. 

Можете ли вы помочь мне исправить это?

Thank's!

ответ

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. Как изменить это, чтобы не изменить его с нуля? – oco

+0

Добавьте 'где EMER_INFO1 не null 'в' UPDATE'. –

0

Вы можете использовать CONVERT со стилем формата 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