tes*_*est 5 sql-server ssis etl date derived-column
我正在与 ssis 合作。我有一列包含格式整数的日期YYYYMMDD:例如,我得到的日期20190214。我使用派生列将其转换为格式日期YYYY-MM-DD在我的情况下,例如2019-02-14
但有时我会收到错误的值,例如20188101。我怎么能测试我有好的价值要转换成日期?
有 3 种方法可以实现
除了第一个派生列之外,您还可以使用以下表达式添加另一个派生列:
(DT_DATE)(LEFT([DateColumn],4) + "-" + SUBSTRING([DateColumn],5,2) + "-" + RIGHT([DateColumn],2))
Run Code Online (Sandbox Code Playgroud)
如果日期值不正确,则从Error Output配置中重定向错误值,并且您可以从错误输出中处理这些错误值。
有用的网址
添加一个脚本组件来检查值是否正确,并添加一个类型为 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
Run Code Online (Sandbox Code Playgroud)
在派生列转换之后,添加数据转换转换并尝试转换您添加到的日期派生列DT_DATE,如果转换失败,则按照第一种方法中的说明处理错误输出中的错误值。