如何解决Informatica IICS 中同一列的不同日期格式
我正在以 JSON 格式从 rest API 获取数据,并且有一个场景,其中一列可以具有多种日期格式。当前日期格式可以是 2011-02-12T01:00:00
或 2020-04-15T20:44:57.38
,也可以是 null
或其他格式。
我想通过表达式解析它并尝试捕获完整的日期字符串。下面的表达式似乎工作正常,但它截断了毫秒部分并只返回到秒的值。
iif(isnull(%date_fields%),'\N',to_char(To_date(to_char(%date_fields%),'MM/DD/YYYY HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'))
但是当我在下面的表达式中使用毫秒 usinf 尝试它时:
iif(isnull(%date_fields%),'MM/DD/YYYY HH24:MI:SS.MS'),'YYYY-MM-DD HH24:MI:SS.MS'))
它正在抛出错误:
TT_11132 Transformation [Expression3] had an error evaluating output column [JobStartDate_out].
Error message is [<<Expression Error>> [TO_DATE]: invalid string for converting to Date
... t:TO_DATE(u:TO_CHAR(t:<02/12/2011 01:00:00>,u:'MM/DD/YYYY HH24:MI:SS'),u:'MM/DD/YYYY HH24:MI:SS.MS')].
DECODE (TRUE,iff(isnull(%date_milli%),is_date(To_date(to_char(%date_milli%),'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS.MS'),ERROR('NOT A VALID DATE')))
在 informatica 中处理多日期格式的可能解决方案是什么?这里 JSON 日期格式是字符串,我将它映射到日期/时间类型并使用输出 marco 字段将多个相似的列组合在一起。
解决方法
为什么不检查两个选项 - 有和没有毫秒?
您可以使用以下 iif
条件。另外我认为你的表达有一些问题。
我假设 date_milli 是一种字符类型。如果是日期,那么您可以相应地更改以下表达式。
iff(isnull(%date_milli%),null,iif( is_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS'),to_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS.MS'),'MM/DD/YYYY HH24:MI:SS.MS')
))
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。