日期转换处理 YYYY-MM-DD HH:MM:SS.SSS
Date conversion handling YYYY-MM-DD HH:MM:SS.SSS
我的源是一个文件并加载到 SQL 服务器 table。我正在处理一个场景,我必须将字符串 '2019-04-02T21: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 )
我正在寻找一个永久性修复来处理所有类型的日期时间格式,无论我们在文件中收到什么。
嗯...很抱歉,但没有神奇的组件可以识别所有可能的日期和时间格式(包括斯瓦希里语中的口头格式)。
您需要自己检测格式。您可以使用 DECODE 函数,例如:
DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)
如果你完全确定只有 seconds/milliseconds 是缺失的部分,你可以检查长度,如果小于 12,使用 RPAD 到你的 SUBSTR 的第二部分,格式缺失,或者你可以使用按照@maciejg 的建议解码并为所有可能的日期格式编写代码。
感谢你们的投入。由于我们不确定我们收到的是哪种日期格式,因此我们决定对此进行简单的修复。我已将目标字段更改为 varchar 并简单地将 T 替换为 ' ' 值,因为这是一个暂存映射。
再次感谢您的宝贵时间和意见。
我的源是一个文件并加载到 SQL 服务器 table。我正在处理一个场景,我必须将字符串 '2019-04-02T21: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 )
我正在寻找一个永久性修复来处理所有类型的日期时间格式,无论我们在文件中收到什么。
嗯...很抱歉,但没有神奇的组件可以识别所有可能的日期和时间格式(包括斯瓦希里语中的口头格式)。 您需要自己检测格式。您可以使用 DECODE 函数,例如:
DECODE(True,
IS_DATE(your_input_port, 'DD/MM/YYYY'), TO_DATE(your_input_port, 'DD/MM/YYYY'),
...)
如果你完全确定只有 seconds/milliseconds 是缺失的部分,你可以检查长度,如果小于 12,使用 RPAD 到你的 SUBSTR 的第二部分,格式缺失,或者你可以使用按照@maciejg 的建议解码并为所有可能的日期格式编写代码。
感谢你们的投入。由于我们不确定我们收到的是哪种日期格式,因此我们决定对此进行简单的修复。我已将目标字段更改为 varchar 并简单地将 T 替换为 ' ' 值,因为这是一个暂存映射。
再次感谢您的宝贵时间和意见。