Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中一整天的两个时间戳之间的差异_Sql_Oracle10g - Fatal编程技术网

SQL中一整天的两个时间戳之间的差异

SQL中一整天的两个时间戳之间的差异,sql,oracle10g,Sql,Oracle10g,请帮我解决这个问题 我使用的是Oracle数据库,其中有一个表,其中每秒插入4-5条记录,因此我必须在至少15分钟内没有标记的情况下检查一整天。您可以使用lag来检查这一点 例如,假设您的字段被称为数据类型为时间戳的ts: select ts , prior_ts from (select ts, lag(ts) over (order by ts) prior_ts, case when ts

请帮我解决这个问题


我使用的是Oracle数据库,其中有一个表,其中每秒插入4-5条记录,因此我必须在至少15分钟内没有标记的情况下检查一整天。

您可以使用
lag
来检查这一点

例如,假设您的字段被称为数据类型为时间戳的
ts

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分钟的间隔。

使用提取获得差异的一般示例。时间戳-很难在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