私は、Oracle 12cのDBテーブル持って、それの一つが列UTC_TIMESTAMPだがコラム「タイムゾーン付きタイムスタンプ(6)」と数分で「現在の時間」の違い
UTC_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE
それはにタイムスタンプを保存するタイプのものでありUTCの間はcurrent_timestamp
とsystimestamp
の両方が異なるタイムゾーンでタイムスタンプを与えます。
MAX(utc_timestamp)
とcurrent_timestamp
の時間差は、時間帯が異なるために時間差を無視して分単位で取得するにはどうすればよいですか。例えば
:
:上記の条件のselect current_timestamp from dual;
Gives=> 23-AUG-17 04.43.16.253931000 PM AMERICA/CHICAGO
select systimestamp from dual;
Gives=> 23-AUG-17 05.43.16.253925000 PM -04:00
select max(UTC_TIMESTAMP) from table_name;
Gives=> 23-AUG-17 09.40.02.000000000 PM +00:00
私はMAX(utc_timestamp)
とcurrent_timestamp
での時間差を確認するためにSQLを実行したときに、私は数3
を取得する必要があります私はのようなものが必要だと思います
select (extract(minute from current_timestamp) - extract(minute from max(UTC_TIMESTAMP)) * 1440) AS minutesBetween from table_name;
しかし、異なるタイムゾーンはそれを台無しにしています。私は-4317のような負の数になります。これは、current_timestampがCSTにあるmax(utc_timestamp)よりも高いため、正しいかもしれません。だから私は試しました:
このSQLはエラーなしで実行されますが、-83461のような大きな負数を生成します。私が間違っていることを見つけるのを助けてください。
入力いただきありがとうございます。私は結果が1時間を超えることができることを知っている。だから、何とか数分で時間を変換し、分の部分に追加できるなら、これは私のために働くだろう。結果はアラート状態で使用されます。結果が事前定義された分数を超えると、アラートがトリガーされます。だから、私は2つのタイムスタンプの実際の差であるべき単一の数字として結果を必要とする。 – 300
@ 300 - 次に** no **、あなたはしません。代わりに、レコードを45分以上経過させる場合は、 '> interval 'のように間隔を45分と比較してください。そうすれば、数字、タイムスタンプ、および間隔だけを心配する必要はありません。 – mathguy
私はあなたの提案にしたがってそれを吹き飛ばして時間/分を分単位で変換し、分単位でそれらを分単位で最終的に得ることを考えると思います。 'select (抽出日(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - max(UTC_TIMESTAMP)))* 1440) +(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - max(UTC_TIMESTAMP))) 60分) +(分(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - 最大(UTC_TIMESTAMP)))) AS minutesBetween commsdesk.fact_realm_utilization; ' – 300