web-dev-qa-db-fra.com

Fonction DATEDIFF dans Oracle

Je dois utiliser Oracle mais la fonction DATEDIFF ne fonctionne pas dans Oracle DB.

Comment écrire le code suivant dans Oracle? J'ai vu des exemples en utilisant INTERVAL ou TRUNC.

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

Dans Oracle, vous pouvez simplement soustraire deux dates et obtenir la différence en days. Notez également que contrairement à SQL Server ou MySQL, dans Oracle, vous ne pouvez pas exécuter d'instruction select sans une clause from. Une solution consiste à utiliser la table factice intégrée, dual:

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

Il suffit de soustraire les deux dates:

select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;

Le résultat sera la différence en jours.

Plus de détails sont dans le manuel:
https://docs.Oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

5

Vous pouvez simplement soustraire deux dates. Vous devez d'abord le lancer, en utilisant to_date:

select to_date('2000-01-01', 'yyyy-MM-dd')
       - to_date('2000-01-02', 'yyyy-MM-dd')
       datediff
from   dual
;

Le résultat est en jours, à la différence de ces deux dates est -1 (vous pouvez échanger les deux dates si vous le souhaitez). Si vous aimez l'avoir en heures, il vous suffit de multiplier le résultat par 24.

3
Patrick Hofman