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

Datetime 日期转换处理YYYY-MM-DD HH:MM:SS.SSS,datetime,etl,informatica,informatica-powercenter,workflow-manager-1.x,Datetime,Etl,Informatica,Informatica Powercenter,Workflow Manager 1.x,我的源代码是一个文件,正在加载到SQL Server表中。我正在处理一个场景,其中我必须将字符串“2019-04-02T21:24:00.065”转换为informatica日期时间格式 我尝试了下面的表达式,但有时它失败了,因为我们在少数情况下没有从源文件接收毫秒 IIF(非ISNULL(日期字段),至日期(SUBSTR(日期字段,0,10)| | | | | | SUBSTR(日期字段,12,12),'YYYY-MM-DD HH24.MI.SS.US'),NULL) 我正在寻找一个永久的修复

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

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

IIF(非ISNULL(日期字段),至日期(SUBSTR(日期字段,0,10)| | | | | | SUBSTR(日期字段,12,12),'YYYY-MM-DD HH24.MI.SS.US'),NULL)


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

嗯。。。很抱歉,但是没有神奇的组件可以识别所有可能的日期和时间格式(包括斯瓦希里语中的动词)。 您需要自己检测格式。您可以使用解码功能,例如:

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

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

感谢您的输入。因为我们不确定接收的是哪种日期格式,所以我们决定对此进行一个简单的修复。我已将目标字段更改为varchar,并简单地用“”值替换T,因为这是一个分段映射

再次感谢您的时间和投入