请帮我解决这个问题。
我正在使用 Oracle 数据库,并且有一个表,其中每秒插入 4-5 条记录,因此我必须检查一整天是否至少 15 分钟没有发生标记。
你可以lag
用来检查这个。
例如,假设您的字段被称为ts
数据类型timestamp
:
select ts , prior_ts
from (select ts,
lag(ts) over (order by ts) prior_ts,
case
when ts - lag(ts) over (order by ts) > numtodsinterval(15, 'minute')
then 'x'
end gap_flag
from your_table
where ts between A and B -- limit checks to a range.
)
where gap_flag = 'x';
所以它会给出> 15分钟发生的间隙。
使用 EXTRACT 获取差异的一般示例。时间戳 - 很难在 Dazzal 的示例中添加任何内容:
SELECT (end_mm-start_mm) minutes_diff
FROM
( -- can extract hours and seconds the same way --
SELECT EXTRACT(MINUTE From start_ts) start_mm
, EXTRACT(MINUTE From end_ts ) end_mm
FROM
( -- initial data --
SELECT timestamp '2013-03-22 13:10:55' start_ts
, timestamp '2013-03-22 13:26:35' end_ts
FROM dual
))
/
Output: 16 minutes = 26 -10