Dengan asumsi kolom sudah tanggal, dan oleh karena itu konversi ke dan dari string yang Anda lakukan tidak ada gunanya, dan perbedaannya akan selalu kurang dari satu hari, Anda dapat melakukan:
to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')
Ini mendapatkan perbedaan antara tanggal sebagai pecahan dari hari; pastikan itu positif melalui abs()
; dan kemudian menambahkan pecahan itu kembali ke tanggal nominal, yang memiliki waktunya sebagai tengah malam. Kemudian ia mengubahnya menjadi string, hanya melihat waktu.
Demo cepat:
-- CTEs to supply the two date/times
with stp (created_date) as (
select cast(timestamp '2018-02-26 12:59:21' as date) from dual
),
adhh (created_date) as (
select cast(timestamp '2018-02-26 12:59:32' as date) from dual
)
select to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')
from stp cross join adhh;
TO_CHAR(
--------
00:00:11
Jika perbedaannya dapat melebihi satu hari, tetapi bukan satu tahun, Anda dapat mengubah model format menjadi sesuatu seperti 'FMDDD FMHH24:MI:SS'
, yang akan menampilkan hari penuh di awal.