0

2 つのタイムスタンプの差を取る選択クエリがあります。

select EXTRACT (HOUR FROM (systimestamp-queuereceiveddate(a,b))) 
  from dual

queuereceived日付関数もタイムスタンプを返します。抽出関数を使用して日を抽出することはできますが、時間は抽出できません。

これについてアドバイスしてください

4

1 に答える 1

3

時間を抽出することは確かに機能します:

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

もちろん、あなたが見ている問題を説明していないので推測していますが、関数は機能するので、これはあなたが意味していると私が考えることができる唯一のことです...

于 2013-04-29T10:45:52.330 に答える