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

时间:2019-04-03 14:50:52

标签: datetime etl informatica informatica-powercenter workflow-manager-1.x

我的来源是一个文件,正在加载到SQL Server表中。我正在研究一种方案,其中我必须将字符串'2019-04-02 T 21:24:00.065'转换为informatica datetime格式。

我尝试使用下面的表达式,但是有时由于我们在某些情况下没有从源文件接收毫秒而导致失败。

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

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

3 个答案:

答案 0 :(得分:1)

好吧...很抱歉地说,但是没有任何魔术组件可以识别所有可能的日期和时间格式(例如,斯瓦希里语中的口头表达)。 您将需要自己检测格式。您可以使用DECODE函数,例如:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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