我的源是一个文件并加载到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 )
我正在寻找永久修复来处理所有类型的日期时间格式,无论我们在文件中收到什么。
嗯...我很遗憾地说,但是没有神奇的组成部分可以识别所有可能的日期和时间格式(包括例如斯瓦希里语的口头表达)。您需要自己检测格式。您可以使用DECODE函数,例如:
DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)
如果你完全确定只有几秒/毫秒是缺失的部分,你可以检查长度,如果小于12,使用RPAD到你的SUBSTR的第二部分缺少格式,或者你可以使用@maciejg建议的解码和为所有可能的日期格式编写代码。
谢谢你的投入。由于我们不确定我们接收哪种日期格式,因此我们决定采用简单的解决方案。我已将目标字段更改为varchar,只需将T替换为''值,因为这是一个临时映射。
再次感谢您的时间和投入。