Для получения точного результата вам нужно извлечь часы, минуты и секунды из разницы в отметке времени, например:
SELECT
ETL_BATCH_ID,
ETL_BATCH_GROUP_NAME,
BATCH_START_TS,
DW_DM_END_TS,
LPAD(EXTRACT(HOUR FROM COMPLETION_TIME), 2, 0)
|| ':'
|| LPAD(EXTRACT(MINUTE FROM COMPLETION_TIME), 2, 0)
|| ':'
|| LPAD(ROUND(EXTRACT(SECOND FROM COMPLETION_TIME)), 2, 0) AS COMPLETION_TIME
FROM
(
SELECT
ETL_BATCH_ID,
ETL_BATCH_GROUP_NAME,
TO_CHAR(BATCH_START_TS, 'DD-MON-YY')
|| ' '
|| TO_CHAR(BATCH_START_TS, 'HH24:MI:SS') "BATCH_START_TS",
TO_CHAR(DW_DM_END_TS, 'DD-MON-YY')
|| ' '
|| TO_CHAR(DW_DM_END_TS, 'HH24:MI:SS') "DW_DM_END_TS",
DW_DM_END_TS - BATCH_START_TS "COMPLETION_TIME"
FROM
BI_ETL.BI_ETL_BATCH
WHERE
ETL_BATCH_GROUP_NAME = 'CMD'
);
Пример:
SQL> SELECT
2 LPAD(EXTRACT(HOUR FROM DIFF), 2 , 0) || ':' ||
3 LPAD(EXTRACT(MINUTE FROM DIFF), 2 , 0) || ':' ||
4 LPAD(ROUND(EXTRACT(SECOND FROM DIFF)), 2 , 0) as diff
5 FROM
6 (
7 SELECT
8 SYSTIMESTAMP - ( SYSTIMESTAMP - 2 / 1440 ) AS DIFF
9 FROM
10 DUAL
11 );
DIFF
--------------------------
00:02:01
SQL>
Приветствия! !