【问题标题】:PL/SQL Extracting difference between dates in different formatsPL/SQL 提取不同格式日期之间的差异
【发布时间】:2018-02-16 09:54:22
【问题描述】:

这是我尝试使用的查询:

select a.cr_mdt_abstractor_dt, b.created,
(trunc(a.CR_MDT_ABSTRACTOR_DT - b.created) || ' days and ' ||<br>
        to_char(to_date('01/01/2000', 'MM-DD-YYYY') + (a.CR_MDT_ABSTRACTOR_DT - b.created),
                'HH24:MI:SS'
               )
       ) as Diff
from CR_MDT a,
CR_MDT_VERIFY b
where a.CR_MDT_ID=b.FK_CR_MDT_ID

我得到的错误是:

ORA-00932:不一致的数据类型:预期的 NUMBER 得到了 INTERVAL DAY TO SECOND

b.created 列的日期格式为09-MAR-17 10.52.23.195311 AM(TIMESTAMP) a.cr_mdt_abstractor_dt 的列在 DATE 中。

我能否获得帮助以更正查询,以便将 b.created 列转换为从 a.cr_mdt_abstractor_dt 中提取的转换格式?

【问题讨论】:

    标签: oracle date plsql extract date-difference


    【解决方案1】:

    CR_MDT_ABSTRACTOR_DT (TIMESTAMP) 和created 上分别使用TRUNC

    SELECT a.cr_mdt_abstractor_dt,
      b.created,
      TRUNC(a.CR_MDT_ABSTRACTOR_DT) - TRUNC(b.created)
      || ' days and '
      || TO_CHAR(to_date('01/01/2000', 'MM-DD-YYYY') + (a.CR_MDT_ABSTRACTOR_DT - b.created), 'HH24:MI:SS' ) AS Diff
    FROM CR_MDT a,
      CR_MDT_VERIFY b
    WHERE a.CR_MDT_ID=b.FK_CR_MDT_ID;
    

    样本输出:

    CREATED       DIFF
    07-09-17    -182 days and 12:15:15
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2016-09-20
      • 1970-01-01
      • 2013-01-28
      相关资源
      最近更新 更多