Oracle: как вычесть две даты и получить минуты результата

Я написал эту функцию, чтобы получить минуты от даты, но я не могу получить минуты между двумя датами, как это получить ?

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;

2 ответов


когда вы вычитаете две даты в Oracle, вы получаете количество дней между двумя значениями. Поэтому вам просто нужно умножить, чтобы получить результат за считанные минуты:

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

для тех, кто хочет подстроить две метки времени (вместо дат), есть аналогичное решение:

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

или

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