SQL Server: попытка преобразовать дату в регистр

У меня есть этот код SQL, который выполняет передачу данных регистрации гарантии на лист оборудования. Но я получаю 4 сообщения об ошибках, которые

Сообщение 102, Уровень 15, Состояние 1, Строка 3
Неверный синтаксис рядом с ','.

Msg 102, уровень 15, состояние 1, строка 16
Неверный синтаксис рядом с 'T1'.

Это код, который я использую, который преобразует дату и помещает ее в правильный формат, например YYYY-MM-DD

UPDATE TOP (100) [TEST].[dbo].[Report]
SET [U_DateA] = SUBSTRING((T1.[DateAchat], 3, 1) = '-' 

    [U_CoName] = LEFT((T1.[Individu_prenom] + ' ' + T1.[Individu_nom]), 50),
    [U_CoRue] = T1.[Individu_adresse],
    [U_CoVil] = T1.[Individu_ville],

FROM 
    (SELECT 
         idForm, [FormDateEntree], REPLACE([DateAchat], '/', '-') AS DateAchat,
         [Individu_prenom], [Individu_nom], [Individu_adresse],
         [Individu_ville], [Individu_CpZip], [Individu_Telephone],
         [Individu_Email], [Individu_pays], [Individu_provEtat], 
         [ModeleNo],[ModeleSerie] 
     FROM
         [dTEST2].[dbo].[RegistrTest]) T1

У кого-нибудь есть идея?

1 ответ

Решение

Во-первых, у вас есть два ((в первой подстроке вам нужен только один. CASE WHEN SUBSTRING(T1.[DateAchat], 3, 1) = '-'

Во-вторых, удалить AS DateAchat от. Вам не нужно указывать имя столбца в запросе на обновление!

Вместо того, чтобы манипулировать датой и строкой (которая зависит от вашей системы), сделайте так, чтобы иметь формат даты в гггг-мм-дд:

... SET [U_DateA] = CONVERT(CHAR(10), T1.[DateAchat], 126) ...

я надеюсь [U_DateA] это строка Если это поле даты, почему бы не сохранить его как дату?

Другие вопросы по тегам