1

我的源是一个文件并加载到 SQL Server 表中。我正在处理一种情况,我必须将字符串 '2019-04-02 T 21:24:00.065' 转换为 informatica 日期时间格式。

我尝试了下面的表达式,但有时由于我们在少数情况下没有从源文件接收到毫秒数而失败。

IIF(NOT ISNULL(DATEFIELD),TO_DATE(SUBSTR (DATEFIELD, 0, 10) || ' ' || SUBSTR(DATEFIELD, 12, 12), 'YYYY-MM-DD HH24.MI.SS.US'),NULL )

我正在寻找一个永久修复来处理所有类型的日期时间格式,无论我们在文件中收到什么。

4

3 回答 3

1

嗯...我很遗憾地说,但没有魔法组件可以识别所有可能的日期和时间格式(包括例如斯瓦希里语的口头语言)。您需要自己检测格式。您可以使用 DECODE 功能,例如:

DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)
于 2019-04-03T19:56:59.157 回答
0

如果您完全确定只有秒/毫秒是缺失的部分,您可以检查长度,如果小于 12,则使用 RPAD 到您的 SUBSTR 的第二部分缺少格式,或者您可以按照@maciejg 的建议使用解码和为所有可能的日期格式编写代码。

于 2019-04-04T04:26:46.067 回答
0

感谢您的投入。由于我们不确定我们收到的是哪种日期格式,因此我们决定对此进行简单的修复。我已将目标字段更改为 varchar 并简单地将 T 替换为 ' ' 值,因为这是一个临时映射。

再次感谢您的时间和投入。

于 2019-04-04T05:46:49.880 回答