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呢?
答案 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;