日期转换处理YYYY-MM-DD HH:MM:SS.SSS

问题描述 投票:1回答:3

我的源是一个文件并加载到SQL Server表中。我正在研究一个场景,我必须将字符串'2019-04-02T21:24:00.065'转换为informatica日期时间格式。

我试过下面的表达式,但有时它失败了,因为我们在很少的情况下没有从源文件中接收毫秒数。

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

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

datetime etl informatica informatica-powercenter workflow-manager-1.x
3个回答
1
投票

嗯...我很遗憾地说,但是没有神奇的组成部分可以识别所有可能的日期和时间格式(包括例如斯瓦希里语的口头表达)。您需要自己检测格式。您可以使用DECODE函数,例如:

DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)

0
投票

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


0
投票

谢谢你的投入。由于我们不确定我们接收哪种日期格式,因此我们决定采用简单的解决方案。我已将目标字段更改为varchar,只需将T替换为''值,因为这是一个临时映射。

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

© www.soinside.com 2019 - 2024. All rights reserved.