Ik moet Oracle gebruiken maar de functie DATEDIFF werkt niet in de Oracle DB.
Hoe kan ik de volgende code in Oracle schrijven? Ik zag een aantal voorbeelden met behulp van INTERVAL of TRUNC.
SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;
In Oracle kun je eenvoudig twee datums van elkaar aftrekken en het verschil in dagen krijgen. Merk ook op dat in tegenstelling tot SQL Server of MySQL, je in Oracle geen select
statement kunt uitvoeren zonder een from
clausule. Een manier om dit te omzeilen is door gebruik te maken van de ingebouwde dummy tabel, dual
:
SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -
TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM dual
Trek gewoon de twee datums af:
select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;
Het resultaat zal het verschil in dagen zijn.
Meer details staan in de handleiding:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042
Je kunt gewoon twee datums van elkaar aftrekken. Je moet het eerst casten, met to_date
:
select to_date('2000-01-01', 'yyyy-MM-dd')
- to_date('2000-01-02', 'yyyy-MM-dd')
datediff
from dual
;
Het resultaat is in dagen, naar het verschil van deze twee datums is -1
(je kunt de twee datums omwisselen als je wilt). Als je het in uren wilt hebben, vermenigvuldig je het resultaat met 24.