【问题标题】:Date conversion handling YYYY-MM-DD HH:MM:SS.SSS日期转换处理 YYYY-MM-DD HH:MM:SS.SSS
【发布时间】:2019-08-25 03:44:42
【问题描述】:

我的源是一个文件并加载到 SQL Server 表中。我正在处理一种情况,我必须将字符串 '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)

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-09
          • 1970-01-01
          • 2022-10-13
          • 2023-03-27
          • 1970-01-01
          • 2010-10-04
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多