web-dev-qa-db-fra.com

Oracle: comment soustraire deux dates et obtenir les minutes du résultat

J'ai écrit cette fonction pour obtenir les minutes d'une date, mais je ne peux pas avoir des minutes entre deux dates, comment l'obtenir? 

FUNCTION get_minute(p_date DATE)
RETURN NUMBER
IS
BEGIN
    IF p_date IS NOT NULL THEN
        return  EXTRACT(MINUTE FROM TO_TIMESTAMP(to_char(p_date,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS'));
    ELSE
        RETURN 0;
    END IF;
END get_minute;
9
Frank

Lorsque vous soustrayez deux dates dans Oracle, vous obtenez le nombre de jours entre les deux valeurs . Il suffit donc de se multiplier pour obtenir le résultat en minutes:

SELECT (date2 - date1) * 24 * 60 AS minutesBetween
FROM ...
30
lc.

Pour ceux qui veulent soustraire deux horodatages (au lieu de dates), il existe une solution similaire:

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 1440 AS minutesInBetween
FROM ...

ou

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 86400 AS secondsInBetween
FROM ...
8
KeyMaker00

Je peux gérer de cette façon:

select to_number(to_char(sysdate,'MI')) - to_number(to_char(*YOUR_DATA_VALUE*,'MI')),max(exp_time)  from ...

Ou Si vous voulez l'heure juste changer le MI;

select to_number(to_char(sysdate,'HH24')) - to_number(to_char(*YOUR_DATA_VALUE*,'HH24')),max(exp_time)  from ...

les autres ne travaillent pas pour moi. Bonne chance.

0
ibrahim