如何从 2 个时间戳列中获得以分钟为单位的差异?

Kin*_*rog 7 oracle timestamp

似乎无法弄清楚这一点。只需要 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
Run Code Online (Sandbox Code Playgroud)

小智 13

select
  round(
    (cast(current_timestamp as date) - cast(<other_timestamp> as date))
    * 24 * 60
  ) as diff_minutes
from <some_table>;
Run Code Online (Sandbox Code Playgroud)

这是我用来计算当前时间戳和用于延迟监控的心跳表条目之间的差异的方法。

  • 为什么这个被否决了?这个查询在我看来并不算太糟糕,而且比其他答案更容易阅读...... (3认同)

Phi*_*lᵀᴹ 10

假设您的表被称为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;
Run Code Online (Sandbox Code Playgroud)

常识,老实说。

将一切减少到秒

  • 一分钟是 60 秒
  • 一小时是 60 分钟(或 60 * 60 秒)
  • 一天是 24 小时或 (24 * 60 * 60)

我们对每个元素执行差异,提取所有值,将它们转换为基数(秒),然后将它们缩放到所需的粒度级别(分钟)。

(也可能需要一个EXTRACT(YEAR)。