SSIS中错误的日期值

时间:2019-02-14 17:05:37

标签: sql-server date ssis etl derived-column

我正在与SSIS合作。我有一个包含格式为整数YYYYMMDD的日期的列:例如,到今天我得到了20190214。例如,我使用派生列将日期转换为日期YYYY-MM-DD的形式,例如{ {1}}

但是有时我会收到错误的值,例如2019-02-14。我该如何测试我有可以转换为日期的好的值?

1 个答案:

答案 0 :(得分:3)

有3种方法可以实现这一目标

(1)使用另一个派生列

除了第一个“派生列”之外,您还可以添加具有以下表达式的另一个派生列:

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

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

有用的链接

(2)使用脚本组件

添加脚本组件以检查值是否正确,并添加类型为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)添加数据转换转换

在派生列Transformation之后,添加数据COnversion Transformation,然后尝试转换添加到DT_DATE的Date Derived Column(如果转换失败),则按照第一种方法中的说明处理错误输出中的错误值。