Oracle:如何减去两个日期并获得结果的分钟数

Fra*_*ank 12 oracle plsql date

我写这个函数是为了从日期中得到分钟,但我不能在两个日期之间得到分钟,如何得到它?

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;
Run Code Online (Sandbox Code Playgroud)

lc.*_*lc. 37

在Oracle中减去两个日期时,您将获得两个值之间的天数.所以你只需要在几分钟内相乘得到结果:

SELECT (date2 - date1) * 24 * 60 AS minutesBetween
FROM ...
Run Code Online (Sandbox Code Playgroud)


Key*_*r00 9

对于那些想要两个时间戳(而不是日期)的人,有一个类似的解决方案:

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 1440 AS minutesInBetween
FROM ...
Run Code Online (Sandbox Code Playgroud)

要么

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 86400 AS secondsInBetween
FROM ...
Run Code Online (Sandbox Code Playgroud)

  • 我推荐这个答案,因为它不依赖于存储在数据库中的日期格式.获取已用时间:SELECT(SYSDATE-CAST(date_column AS DATE))*1440 FROM my_table (2认同)