Распаковка час, конечно, работает:
select systimestamp - (systimestamp - 27.5/24) as diff,
extract(day from systimestamp - (systimestamp - 27.5/24)) as diff_day,
extract(hour from systimestamp - (systimestamp - 27.5/24)) as diff_hour
from dual;
DIFF DIFF_DAY DIFF_HOUR
------------------------------ ---------- ----------
+000000001 03:30:00.584929 1 3
Если вы ждете его, чтобы показать общее количество часов, если разница больше, чем один день, то вы не понимаете, что делает extract function, и вам нужно будет вычислить сумму, умножив значение day
на 24 и добавив, что значение hour
:
select systimestamp - (systimestamp - 27.5/24) as diff,
extract(day from systimestamp - (systimestamp - 27.5/24)) * 24
+ extract(hour from systimestamp - (systimestamp - 27.5/24))
as diff_hour_total
from dual;
DIFF DIFF_HOUR_TOTAL
------------------------------ ---------------
+000000001 03:30:00.612830 27
Конечно, я угадывать, так как вы не объяснили проблему, что вы видите, но так как функция не работает, это единственное, что я могу думать вы имеете в виду ...
, что ваша ошибка? –
«не работает неожиданно» бесполезно. Опишите, что вы ожидаете, и что на самом деле происходит, включая сообщения об ошибках. – APC
@APC "не работает как * un * ожидается"? Это предложение заставляет мой мозг болеть :-) –