用于将字符串转换为日期的SSIS表达式

时间:2012-08-02 02:08:16

标签: ssis

使用SQL Server 2008,Visual Studio 2008.

尝试将数据从字符串列转换为派生的Date列。 该字符串可以采用两种格式:" dd / mm / yy" (可以假设世纪20),或者" dd / mm / yyyy" 。例如" 02/05/12"," 23/12 / 02"," 13/08/2012"。

所以我为Derived列尝试了这样的表达式:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

但Visual Studio提供错误: "表达式无效,或者存在内存不足错误"。

它接受一个更简单的表达式,如:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)("20" + SUBSTRING(DateReceived,7,2) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

但此表达式仅适用于" dd / mm / yy"格式。

我做错了什么?感谢。

1 个答案:

答案 0 :(得分:2)

没关系,错误是由于拼写错误造成的。 (在列类型上调用RTRIM,而不是列名称)。

以下作品:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DateReceived)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))