Saya perlu menggunakan Oracle tetapi fungsi DATEDIFF tidak berfungsi di Oracle DB.
Bagaimana cara menulis kode berikut di Oracle? Saya melihat beberapa contoh menggunakan INTERVAL atau TRUNC.
SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;
Di Oracle, Anda cukup mengurangi dua tanggal dan mendapatkan selisih dalam hari. Perhatikan juga bahwa tidak seperti SQL Server atau MySQL, di Oracle Anda tidak dapat melakukan pernyataan select
tanpa klausa from
. Salah satu cara untuk mengatasinya adalah dengan menggunakan tabel dummy bawaan, dual
:
SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -
TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM dual
Kurangi saja kedua tanggal tersebut:
select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;
Hasilnya akan menjadi selisih hari.
Rincian lebih lanjut ada di manual:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042
Anda bisa dengan mudah mengurangi dua tanggal. Anda harus meng-cast terlebih dahulu, menggunakan to_date
:
select to_date('2000-01-01', 'yyyy-MM-dd')
- to_date('2000-01-02', 'yyyy-MM-dd')
datediff
from dual
;
Hasilnya dalam hari, untuk perbedaan dari dua tanggal ini adalah -1
(Anda bisa menukar dua tanggal jika Anda suka). Jika Anda ingin memilikinya dalam jam, kalikan saja hasilnya dengan 24.