select floor(to_number(to_date('20180620130000','yyyy-mm-dd hh24:mi:ss')-to_date('20180620080000', 'yyyy-mm-dd hh24:mi:ss'))*24*60)
from dual;
select to_number(to_date('20180620130000','yyyy-mm-dd hh24:mi:ss')-to_date('20180620080000', 'yyyy-mm-dd hh24:mi:ss'))*24*60
from dual;
为什么使用下限的SQL执行结果为299,应该为300
答案 0 :(得分:2)
您遇到一些奇怪的精度问题。
但是解决方案很简单-删除多余的TO_NUMBER
(两个DATE之差是一个数字),您将获得正确的结果
select
floor((to_date('20180620130000','yyyy-mm-dd hh24:mi:ss')-to_date('20180620080000', 'yyyy-mm-dd hh24:mi:ss'))*24*60) flr
from dual;
FLR
----------
300