SSIS表达式替换年份并保留日期和月份

时间:2015-08-27 16:41:49

标签: date datetime ssis expression type-conversion

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

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

任何对此的见解都会有所帮助

1 个答案:

答案 0 :(得分:1)

使用VS 2012,我使用值为“27.08.2014”的字符串变量testdate运行测试,然后在表达式任务中应用您的表达式,用@ [User :: testdate]替换birthdate。这导致以下错误

  

“无法评估表达式....尝试解析   表达......失败了。表达式可能包含无效的toke,   不完整的toke或无效的元素。它可能不是   格式良好,或者可能缺少必要元素的一部分,例如a   括号“。

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

  

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

代替“birthdate”,我在上面应用了我的@ [User :: testdate]变量(值为“27.08.2014”),并且返回以下评估值时工作正常。

  

2015年8月27日

然后,如果使用它来填充数据库表,则可以将该值转换为datetime。希望这有帮助。