Сбой преобразования T SQL при преобразовании даты и / или времени из символьной строки - PullRequest
0 голосов
/ 07 декабря 2018

Используя MS SQL Server и как часть процесса ETL, у меня есть FieldA в tblTest1, сохраненный как nvarchar (512).

Я пытаюсь вставить это в FieldB в tblTest2, который хранится как datetime - однако это терпит неудачу с ошибкой:

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

Итак, перед вставкой я попробовал следующееобновления безрезультатны:

UPDATE tblTest1 SET FieldA = CONVERT(nvarchar(MAX),FieldA, 112) 


UPDATE tblTest1 SET FieldA =  CAST (FieldA AS DATETIME2)

UPDATE tblTest1 SET FieldA =  CONVERT(nvarchar,CAST(FieldA AS DATETIME2), 120)

UPDATE tblTest1 SET FieldA =  CONVERT (DATE,FieldA)

Куда я иду не так?FieldA изначально выглядит так: 20081015 (ггггммдд)

Я также пытался изменить FieldA перед вставкой, но безрезультатно:

alter table tblTest1  alter column FieldA DateTime

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я решил это - это проблема с отображением поля как части отображения поля.Спасибо всем за помощь и предложения.

0 голосов
/ 07 декабря 2018

Я бы предложил:

UPDATE tblTest1
    SET FieldA =  TRY_CONVERT(DATETIME2, FieldA);

Обратите внимание, что при этом будут перезаписаны значения, которые не имеют допустимого формата даты / времени.Итак, вы можете захотеть:

UPDATE tblTest1
    SET FieldA = TRY_CONVERT(DATETIME2, FieldA)
    WHERE TRY_CONVERT(DATETIME2, FieldA) IS NOT NULL;

Или, еще проще, вы можете вообще отказаться от изменения значения поля и использовать вычисляемый столбец:

alter tbltest1 add fieldA_dt as (TRY_CONVERT(DATETIME2, FieldA));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...