从字符串转换日期和/或时间时,T SQL转换失败

时间:2018-12-07 15:38:55

标签: sql sql-server date datetime

使用MS SQL Server,作为ETL过程的一部分,我在tblTest1中将FieldA存储为nvarchar(512)。

我正试图将其插入到存储为datetime的tblTest2中的FieldB中-但这失败并出现错误:

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(yyyymmdd)

我还尝试了在插入之前更改FieldA的方法:

alter table tblTest1  alter column FieldA DateTime

2 个答案:

答案 0 :(得分:0)

我建议:

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));

答案 1 :(得分:0)

我解决了这个问题-这是字段映射作为字段映射一部分的问题。感谢大家的帮助和建议。