date-format - 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%),'\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 字段将多个相似的列组合在一起。
解决方案
你为什么不检查这两个选项 - 有和没有毫秒?您可以使用以下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'),
iif( is_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS.MS'), to_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS.MS')
))
)
推荐阅读
- c# - 如何在 C# 中向 SQL 添加 if 和 else
- java - 尝试在同一页面中显示输入的值
- python - 为什么我的 API 密钥在 Python 中的 base64 编码与外部软件对同一密钥的编码不同?
- python - 如何用 0 替换空字符串,但如果不为空则不理会
- github - 设置 Travis-CI 以仅构建已批准的拉取请求
- node.js - 在猫鼬中,如果值为 null,则不应将其添加到 MongoDB
- aem - AEM Query Builder 多个属性值
- heroku - Heroku 缺少必需的标志:-a,
- vba - 根据输入列值选择列表框的行
- c# - 用于批处理的 Azure 服务总线队列最大更新消息锁