Baru saja dibuat penasaran oleh seorang rekan kantor yang tidak bisa mencari selisih waktu melalui query di Oracle. Hmmm apa mungkin oracle tidak punya fungsi date_diff? Setelah melakukan investigasi menyeluruh ke halaman paman google, ternyata solusi yang ditawarkan teramat banyak namun tidak satupun yang dapat menjawab pertanyaan secara gamblang. Setelah membaca jawaban di sini, terbesit pemikiran untuk mengolahnya lebih lanjut.
Kira-kira begini querynya:
SELECT t.*, FLOOR(tanggal_b - tanggal_a) AS hari, FLOOR(MOD(((tanggal_b - tanggal_a) * 24),24)) AS jam, FLOOR(MOD(((tanggal_b - tanggal_a) * 24 * 60),60)) AS menit, FLOOR(MOD(((tanggal_b - tanggal_a) * 24 * 60 * 60),60)) AS detik, TO_CHAR(TO_DATE('00:00:00','HH24:MI:SS') + (tanggal_b - tanggal_a), 'HH24:MI:SS') AS timediff FROM ( SELECT to_date('04/12/2013 15:00:00','DD/MM/YYYY HH24:MI:SS') AS tanggal_a, SYSDATE AS tanggal_b FROM DUAL ) t;
Semoga membantu 🙂
Leave a Reply