我正在从 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%),'\N',
to_char(To_date(to_char(%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%),
'\N',
is_date(To_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'),
is_date(To_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS.MS'),'YYYY-MM-DD HH24:MI:SS.MS'),
ERROR('NOT A VALID DATE')))
在 Informatica 中处理多日期格式的可能解决方案是什么?这里 JSON 日期格式是字符串,我将其映射到日期/时间类型并使用输出 Marco 字段将多个相似的列组合在一起。