Vraag DATEDIFF-functie in Oracle


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 behulp van INTERVAL of TRUNC.

SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;

16
2018-02-09 09:25


oorsprong


antwoorden:


In Oracle kun je eenvoudig twee datums aftrekken en het verschil inhalen dagen. Merk ook op dat in tegenstelling tot SQL Server of MySQL je in Oracle geen a kunt uitvoeren select verklaring zonder een from clausule. Een manier om dit te omzeilen is om de ingebouwde neptafel te gebruiken, dual:

SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -  
       TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM   dual

19
2018-02-09 09:30



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 zijn te vinden in de handleiding:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042


4
2018-02-09 09:27



Je kunt eenvoudig twee datums aftrekken. Je moet het eerst casten, met behulp van 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 tussen deze twee datums is -1 (je zou de twee datums kunnen wisselen als je wilt). Als je het graag uren wilt hebben, vermenigvuldig het resultaat dan met 24.


3
2018-02-09 09:27