Oracle

如何從 2 個時間戳列中獲得以分鐘為單位的差異?

  • February 28, 2018

似乎無法弄清楚這一點。只需要 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
select
 round(
   (cast(current_timestamp as date) - cast(<other_timestamp> as date))
   * 24 * 60
 ) as diff_minutes
from <some_table>;

這是我用來計算目前時間戳和用於延遲監控的心跳表條目之間的差異的方法。

假設您的表被稱為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;

老實說,常識。

將一切減少到幾秒鐘

  • 一分鐘是60秒
  • 一小時是 60 分鐘(或 60 * 60 秒)
  • 一天是 24 小時或 (24 * 60 * 60)

我們對每個元素執行差異,提取所有值,將它們轉換為基數(秒),然後將它們縮放回所需的粒度級別(分鐘)。

(可能EXTRACT(YEAR也需要)。

引用自:https://dba.stackexchange.com/questions/53924