0

请帮我解决这个问题。

我正在使用 Oracle 数据库,并且有一个表,其中每秒插入 4-5 条记录,因此我必须检查一整天是否至少 15 分钟没有发生标记。

4

2 回答 2

1

你可以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分钟发生的间隙。

于 2013-03-22T16:42:05.343 回答
0

使用 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
于 2013-03-22T17:19:47.160 回答