web-dev-qa-db-ja.com

2つのタイムスタンプ列から分単位の違いを取得するにはどうすればよいですか?

これを理解できないようです。 2つのOracleタイムスタンプ列の分単位の違いが必要です。

END_TS                                  START_TS
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
11-NOV-13 01.52.14.000000 PM                            11-NOV-13 01.51.14.000000 PM
11-NOV-13 02.20.47.000000 PM                            11-NOV-13 02.19.47.000000 PM
18-NOV-13 12.44.54.000000 PM                            18-NOV-13 12.34.02.000000 PM
22-NOV-13 12.02.09.000000 AM                            22-NOV-13 12.02.08.000000 AM
5
KingKongFrog
select
  round(
    (cast(current_timestamp as date) - cast(<other_timestamp> as date))
    * 24 * 60
  ) as diff_minutes
from <some_table>;

これは、現在のタイムスタンプとレイテンシ監視のためのハートビートテーブルエントリとの差を計算するために使用したものです。

11
Dirk

テーブルがTSと呼ばれていると仮定します。

SELECT (EXTRACT (DAY FROM (end_ts-start_ts))*24*60*60+
EXTRACT (HOUR FROM (end_ts-start_ts))*60*60+
EXTRACT (MINUTE FROM (end_ts-start_ts))*60+
EXTRACT (SECOND FROM (end_ts-start_ts)))/60
FROM TS;

正直なところ、常識。

すべてを秒に減らす

  • 1分は60秒
  • 1時間は60分(または60 * 60秒)
  • 1日は24時間または(24 * 60 * 60)

各要素の違いを実行し、すべての値を抽出し、それらをベースに変換(2番目)してから、希望する粒度のレベル(分)にスケーリングします。

EXTRACT(YEARも必要になる場合があります)。

9
Philᵀᴹ

これはより良いオプションのようです

select (cast(your_column1 as date) - date '1970-01-01')*24*60*60 
     - (cast(your_column2 as date) - date '1970-01-01')*24*60*60 
from your_table;
0
Abdus Samad