首页 > 解决方案 > 无法使用 SSIS 中的表达式将字符串转换为 DateTime

问题描述

我在 SSIS 包中有 2 个变量作为字符串的 CurrFile 和 DateTime 数据类型的 File_Dt。我想从 CurrFile 中提取 DateTime 并将其存储到 File_Dt 变量中。为此,我使用如下表达式:

(DT_DBDATE) SUBSTRING( @[User::CurrFile], 21,14 )

执行 SUBSTRING 后,值为 20190725001614。现在,我想将此值作为 DateTime 存储在 File_Dt 变量中。这样做时我收到此错误。

尝试将数据类型 DT_WSTR 转换为数据类型 DT_DBDATE 时发生错误代码 0x80020005。

标签: sql-serverdatetimessisexpressionetl

解决方案


您必须确保字符串包含具有以下格式的数据时间值:yyyy-MM-dd HH:mm:ss. 也使用DT_DATEorDT_DBTIMESTAMP代替DT_DBDATE尝试以下表达式:

(DT_DBTIMESTAMP) SUBSTRING( @[User::CurrFile], 21,4 ) + "-" +
SUBSTRING( @[User::CurrFile], 25,2 ) + "-" + 
SUBSTRING( @[User::CurrFile], 27,2 ) + " " +
SUBSTRING( @[User::CurrFile], 29,2 ) + ":" + 
SUBSTRING( @[User::CurrFile], 31,2 ) + ":" + 
SUBSTRING( @[User::CurrFile], 33,2 )

推荐阅读