В арифметике даты мы вычитаем число дней из некоторой даты. Это означает следующее:
SQL> select 0.0142 days,
2 0.0142 * 24 hours,
3 0.0142 * 24 * 60 minutes
4 from dual;
DAYS HOURS MINUTES
---------- ---------- ----------
,0142 ,3408 20,448
SQL>
Как видите, 0,0142 не является хорошим числом; это составляет 20 минут (и 26,88 секунды, как 0,448 * 60 = 26,88).
Почему это вычитается из значения даты, я понятия не имею.
На основании вашего комментария (разрешив 20 минут): спросите автора (этого кода), почему они тогда не использовали 20 минут, а 20,448? Вот как это сделать:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate,
2 sysdate - 20 / (24 * 60) twenty_minutes_ago
3 from dual;
SYSDATE TWENTY_MINUTES_AGO
------------------- -------------------
05.06.2019 11:21:10 05.06.2019 11:01:10
20 минут - 0.013888889
, а не 0.0142
.
SQL> select 20 / (24 * 60) twenty_minutes
2 from dual;
TWENTY_MINUTES
--------------
,013888889
SQL>
, что означает, что ваш код должен был быть
between fromdate - 0.01389 and todate
или, еще лучше
between fromdate - (20 / (24 * 60)) and todate