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]
это строка Если это поле даты, почему бы не сохранить его как дату?