我正在尝试使用此测试查询计算Oracle中两个日期之间的分钟差异:
SELECT
(DATE2-DATE1)*24*60 DIFFINMINUTES
FROM
(
SELECT
TO_DATE('2014-06-06 10:30:00', 'YYYY-MM-DD HH24:MI:SS') DATE1,
TO_DATE('2014-06-06 11:25', 'YYYY-MM-DD HH24:MI') DATE2
FROM DUAL
);
预期结果应该 55分钟,但我得到 54,99999999 。
ROUND这个值可以完成工作,但我真的想了解为什么这个计算是这种行为。
答案 0 :(得分:2)
DATE2 - DATE1
Oracle计算天数差异。这就是为什么会出现一些不准确的原因。
只是一个带时间戳的例子
select inter,
extract (day from inter) days,
extract (hour from inter) hours,
extract (minute from inter) minutes,
extract (second from inter) seconds
from
(select
cast(date2 as timestamp) - cast(date1 as timestamp) inter
FROM
(
SELECT
TO_DATE('2014-06-06 10:30:00', 'YYYY-MM-DD HH24:MI:SS') DATE1,
to_date('2014-06-06 11:25', 'YYYY-MM-DD HH24:MI') date2
from dual
));
时间戳的替代为您提供精确的INTERVAL