Date Diff di Oracle

Ilustrasi diambil dari www.windowsphone.com. Hak cipta sepenuhnya milik pemilik gambar.

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 🙂

Nanda Widyatama

Seorang web developer. Gemar diajak kuliner. Suka fotografi. Sering ngedit sana ngedit sini. Suami yang siaga.

  • Pertamax gan!
    nanda prohammer handal. Pokokmen nek aku ora iso, kowe kudu garapke gaweanku!

    • Lho lha wong pak prohammer android handal mosok tanya saya yang baru belajar ini.. -_-

  • #nandaOracle

  • Sial Gagal Pertamax!!!

  • Saya tertarik dengan tulisan Anda. Saya juga mempunyai informasi mengenai basis data Oracle dan pendaftaran kursus Oracle yang bisa Anda kunjungi di http://lpug.gunadarma.ac.id/sertifikasi/

    • Terima kasih atas infonya, namun sementara ini saya cukup belajar melalui internet (otodidak), dan masih mempertimbangkan untuk mengikuti sertifikasi karena biayanya yang mahal. Mungkin kelak jika memang saya mendapatkan kesempatan yang lebih efisien.