Ik moet Oracle gebruiken, maar de DATEDIFF-functie werkt niet in Oracle DB.
Hoe schrijf ik de volgende code in Oracle? Ik zag enkele voorbeelden met INTERVAL of TRUNC.
SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;
Antwoord 1, autoriteit 100%
In Oracle kun je eenvoudig twee datums aftrekken en het verschil in dagenkrijgen. Merk ook op dat u, in tegenstelling tot SQL Server of MySQL, in Oracle geen select
-instructie kunt uitvoeren zonder een from
-clausule. Een manier om dit te omzeilen is om de ingebouwde dummy-tabel te gebruiken, dual
:
SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -
TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM dual
Antwoord 2, autoriteit 13%
Trek gewoon de twee datums af:
select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;
Het resultaat is het verschil in dagen.
Meer details staan in de handleiding:
https://docs.oracle.com/cd/E11882_01 /server.112/e41084/sql_elements001.htm#i48042
Antwoord 3, autoriteit 6%
Je kunt eenvoudig twee datums 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, het verschil van deze twee datums is -1
(je zou de twee datums kunnen omwisselen als je wilt). Als je het in uren wilt hebben, vermenigvuldig je het resultaat gewoon met 24.
Antwoord 4
We kunnen datums direct aftrekken om het verschil in dagen te krijgen.
SET SERVEROUTPUT ON ;
DECLARE
V_VAR NUMBER;
BEGIN
V_VAR:=TO_DATE('2000-01-02', 'YYYY-MM-DD') - TO_DATE('2000-01-01', 'YYYY-MM-DD') ;
DBMS_OUTPUT.PUT_LINE(V_VAR);
END;