2015-08-27 147 views
-2

我在格式为dd.mm.yyyy的原始数据文件中有一个生日字段。 我需要用2015年替换年份,并在读取文件时保持文件中的月份和日期相同。 目标列是日期时间格式。 我能够制定下面的表达式,但它一直抛出一个我无法理解的错误。SSIS表达式替换年份并保留日期和月份

"2015 -" + RIGHT("0" + (DT_STR,2,1252)DATEPART("mm",birthdate),2) + "-" + RIGHT("0" + (DT_STR,2,1252)DATEPART("dd",birthdate),2)) 

任何深入了解这将是有益的

+1

错误是什么? – saarrrr

回答

1

使用VS 2012,我跑了使用字符串变量testdate值为“2014年8月27日”一个测试,然后在Expression任务更换生日应用于你的表达与@ [User :: testdate]。这导致以下错误

“的表述无法评估....尝试解析 表达...失败。表达式可能包含一个无效的土气, 一个不完整的土气,或无效的元素。它可能不是 格式良好,或者可能缺少所需元素的一部分,如括号为 。“

如果您的原始数据文件是文本,那么它可能是以字符串形式出现,而不是在datetime中格式化,即使它保留dd.mm.yyyy格式。因此,如果您收到类似的错误,则需要将其视为字符串。尝试下面的表达式。

“2015 - ” + SUBSTRING(生日,4,2)+ “ - ” + SUBSTRING(生日, 1,2)

代替 “生日”,我施加我@上面的[User :: testdate]变量(值为“27.08.2014”),它工作正常,返回以下评估值。

2015年8月27日

之后,你就可以在值,如果用它来填充数据库表转换成datetime。希望这有助于。

+0

完美无缺!非常感谢。 – user1597398

相关问题