5

我正在与 ssis 合作。我有一列包含格式整数的日期YYYYMMDD:例如,我得到的日期。例如,在我的情况下,我20190214使用派生列将其转换为格式日期YYYY-MM-DD2019-02-14

但有时我会收到错误的值,例如20188101。我如何测试我是否有良好的价值可以转换为日期?

4

1 回答 1

3

有3种方法可以实现

(1) 使用另一个派生列

除了第一个 Derived COlumn 之外,您可以使用以下表达式添加另一个派生列:

(DT_DATE)(LEFT([DateColumn],4) + "-" +  SUBSTRING([DateColumn],5,2)  + "-" + RIGHT([DateColumn],2))

如果日期值不正确,请从Error Output配置中重定向错误,您可以从错误输出中处理这些错误值。

有用的网址

(2) 使用脚本组件

添加一个脚本组件来检查值是否正确,并添加一个类型为 ie 的输出列OutDateColumn,使用类似的代码(VB.NET)

IF Not Row.DateColumn_IsNULL Then

dim dtDate as DateTime

    If DateTime.TryParseExact(Row.DateColumn,"yyyyMMdd",System.Globalization.InvariantCulture,System.Globalization.DateTimeStyles.None  , dtDate ) Then

        Row.outDateColumn = dtDate.ToString("yyyy-MM-dd")

    Else

        Row.outDateColumn_IsNull = True

    End If


Else

    Row.outDateColumn_IsNull = True

End If

(3) 添加数据转换转换

在派生列转换之后,添加数据转换转换并尝试转换您添加到的日期派生列DT_DATE,如果转换失败,则按照第一种方法中的说明处理错误输出中的错误值。

于 2019-02-14T18:04:34.187 回答