Postgresql选择两行,创建日期相差2小时

时间:2014-05-05 10:53:37

标签: sql postgresql

Hello Postgresql专家。

我对postgresql日期差异选择有疑问。 (不确定我是否正确使用)

我有这样的数据库结构

row_id varchar(32)

event varchar(32)

event_name varchar(32)

create_date timestamp without time zone

当然,我有近500,000行。

但我想搜索两行,彼此相邻,在create_date之间有两小时的差距,我该如何使用postgresql呢?

1 个答案:

答案 0 :(得分:1)

您可以使用lag()

执行此操作
select t.*
from (select t.*,
             lag(create_date) over (order by rowid) as prev_create_date
      from table t
     ) t
where prev_create_date < create_date - 2 * interval '1 hour';

编辑:

如果您确实需要这两行,则可以同时使用lead()lag()

select t.*
from (select t.*,
             lag(create_date) over (order by rowid) as prev_create_date,
             lead(create_date) over (order by rowid) as next_create_date
      from table t
     ) t
where prev_create_date < create_date - 2 * interval '1 hour' or
      next_create_date > create_date + 2 * interval '1 hour'
order by rowid;