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 ...