SSIS派生列表达式

时间:2012-12-06 21:01:22

标签: ssis expression

从包含以下格式的年份和月份的列的平面文件中读取 - > “201212”。

我需要将其插入到DATETIME2列中,但首先我必须用“/”解析它并在日期添加“01”。这样201212将成为2012/12/01

我的Derived Column Transformation中的表达式如下所示:

(DT_DBTIMESTAMP2,0)((DT_WSTR,4)SUBSTRING(RptMthDTM,1,4) + "/" + (DT_WSTR,2)SUBSTRING(RptMthDTM,5,2) + "/" + "01")

这似乎应该可以工作,SSIS接受它(因为它可以解析表达式)但是在运行包时会抛出一个完全无用的错误“尝试执行类型转换时发生错误”。以及它有错误的列。

我没有制作这个包,它是我的典当,我被告知让它工作。

先谢谢interwebs家庭。

1 个答案:

答案 0 :(得分:2)

DT_DBTIMESTAMP2只能从特定的字符串格式转换:yyyy-mm-dd hh:mm:ss[.fffffff]

您可以改为使用此表达式:

(DT_DBTIMESTAMP2,0)((DT_WSTR,4)SUBSTRING(RptMthDTM,1,4) + "-" + (DT_WSTR,2)SUBSTRING(RptMthDTM,5,2) + "-" + "01 00:00:00")

更多细节: [http://msdn.microsoft.com/en-us/library/ms141036.aspx] [1]