使用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
答案 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)
我解决了这个问题-这是字段映射作为字段映射一部分的问题。感谢大家的帮助和建议。