2 つのタイムスタンプの差を取る選択クエリがあります。
select EXTRACT (HOUR FROM (systimestamp-queuereceiveddate(a,b)))
from dual
queuereceived
日付関数もタイムスタンプを返します。抽出関数を使用して日を抽出することはできますが、時間は抽出できません。
これについてアドバイスしてください
時間を抽出することは確かに機能します:
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
総時間数を表示することを期待している場合、差が 1 日以上ある場合は、抽出関数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
もちろん、あなたが見ている問題を説明していないので推測していますが、関数は機能するので、これはあなたが意味していると私が考えることができる唯一のことです...