更新ssis工作流程中的日期

Updating a date in a work flow of ssis

最重要的是,我是 SSIS 的新手,我需要帮助解决这个问题。

我得到了下一个工作流程,一切正常,直到我收到与源中的日期相关的错误。错误是这样的:某些日期的年份类似于 0001(oracle 源),但这不被 sql 服务器接受(我无法更改数据库中为该字段建立的类型)。我有下一个工作流程,我在其中重定向此错误(图片 1):

现在,我需要做这样的事情:

如果日期 < '1900-01-01' 然后日期 = '1900-01-01'

所以,我想到了如图 2 中那样的解决方案,使用派生列。但是我不知道如何在 SSIS 中表达 if 条件,如果这是处理这个问题的最佳方法,甚至更好。

此致

Integration Services Expression Reference

SSIS 表达式语言最接近 if 的是三元运算符 condition?true:false

Condition 是导致布尔值 true/false 的任何值。你的情况 [date] < (DT_DATE)"1900-01-01"

在这里,我将字符串日期 1900-01-01 转换为强类型,以便与我的 "date" 字段进行比较。您希望将该类型与数据流中表示的内容对齐,例如:DT_DATE、DT_DBTIMESTAMP 等

true 是条件为真时的值。您 运行 面临的挑战之一是保持数据类型的一致性。与上面相同的注意事项,但您可能需要 (DT_DATE)"1900-01-01"

false 见上文,但条件为假。这更容易,因为不需要类型转换。 [date]

因此

([date] < (DT_DATE)"1900-01-01") ? (DT_DATE)"1900-01-01" : [date]