我正在与 ssis 合作。我有一列包含格式整数 YYYYMMDD
的日期:例如今天我得到 20190214
.我正在使用派生列将其转换为格式日期 YYYY-MM-DD
以我为例 2019-02-14
但有时我会收到错误的值,例如 20188101
.我怎么能测试我有好的值(value)要转换成日期?
最佳答案
有3种方法可以实现
(1) 使用另一个派生列
除了第一个派生列之外,您还可以使用以下表达式添加另一个派生列:
(DT_DATE)(LEFT([DateColumn],4) + "-" + SUBSTRING([DateColumn],5,2) + "-" + RIGHT([DateColumn],2))
如果日期值不正确,则从
Error Output
重定向错误configuration ,您可以从错误输出处理这些错误值。有用的链接
(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) 添加数据转换变换
在派生列转换之后,添加一个数据转换转换并尝试将您添加的日期派生列转换为
DT_DATE
,如果转换失败,则按照第一种方法中的说明处理错误输出中的错误值。
关于sql-server - ssis 中的日期值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695587/