3

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

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

我在派生列转换中的表达式如下所示:

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

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

我没有构建这个包,它被抵押给我,我被告知让它工作。

在此先感谢互联网家庭。

4

1 回答 1

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]

于 2012-12-06T21:46:04.883 回答