Я понимаю, что это совсем не умно и не является строкой специального формата, которую вы ищете, но этот ответ работает, учитывая, что вывод имеет фиксированную длину:
SELECT SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 1, 1)
|| SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 9, 2)
|| ' '
|| SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 12, 12)
FROM table1;
Он также просто сокращает доли секунды вместо округления, но я предполагаю, что из вашего примера они все равно просто нули.
Это еще большее смущение, но я не удержался:
SELECT SUBSTR(REPLACE(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00')))
, '0000000', '')
, 1, 16)
FROM table1;