У меня есть вопрос о функции sql: floor () - PullRequest
0 голосов
/ 24 июня 2019
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 с использованием floor возвращает 299, оно должно быть 300

1 Ответ

2 голосов
/ 24 июня 2019

Вы столкнулись с какой-то странной проблемой точности.

Но решение простое - удалите лишнее TO_NUMBER (разница двух ДАТ - это число ), и вы получите правильный результат

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