SSIS衍生列 - 检查日期字段是否为空。

4
在 SSIS 的派生列中,我需要检查日期字段是否为空或 null,我使用了这个表达式,但是出现了错误:
TRIM([date field]) == "" ? NULL(DT_DATE) : TRIM([date field])

这个字段的数据类型是 DT_DATE。有什么问题吗?

我已经成功使用了类似这样的表达式:

TRIM(String_field) == "" ? NULL(DT_WSTR,255) : TRIM(String_field)

你得到了什么错误? - digital.aaron
2个回答

3
您正在组合数据类型(如果true是日期,false是字符串)。
这是正确的公式:
TRIM([date field]) == "" ? NULL(DT_DATE) : (DT_DATE)TRIM([date field])

我假设[date field]是一个字符串。


如果[date field]是dt_date类型的呢? - marko
@marko 注意,此表达式不处理空值。 - Hadi
1
@marko --> 如果[date field]是一个日期,那么你的两个测试都会失败。TRIM()和= ""。 - KeithL
如果该字段包含NULL,则此解决方案将抛出异常。 - Yahfoufi

1
关于这个错误,它与派生列结果数据类型有关,因为在条件运算符(?:)中,真和假表达式必须生成相同的数据类型。
另外,您的表达式没有检查 NULL 值,您应该使用以下表达式:
TRIM(REPLACENULL([date field],"")) == "" ? NULL(DT_DATE) : (DT_DATE)TRIM([date field])

此外,您需要确保[date field]可以解析为日期,因此(DT_DATE)TRIM([date field])不会抛出异常,您可以使用错误输出来处理不包含有效日期的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接