在最早的日期后两天删除行?

时间:2017-02-28 01:05:19

标签: sql postgresql

我有下表

CREATE TABLE public.mylog
(
  id bigint NOT NULL DEFAULT nextval('mylog_id_seq'::regclass),
  userid text,
  insert_time timestamp with time zone DEFAULT now(),
  CONSTRAINT mylog_pkey PRIMARY KEY (id),
  CONSTRAINT mylog_userid_unique UNIQUE (userid)
)

我们假设最早的行有insert_time为“2017-02-24 00:00:00.064049 + 00”

如何删除包含最早insert_time的所有行以及之后的一天。在我们的示例中,查询将删除在2017-02-24和2017-02-25上插入的行

2 个答案:

答案 0 :(得分:0)

此方法的策略是使用子查询找到最早的插入 date ,然后删除日期小于此最早日期加上两天的所有记录。对于您的示例数据,insert_time::date应该会产生'2017-02-24',因此应将任何低于'2017-02-26'的内容作为删除对象。

DELETE
FROM public.mylog
WHERE insert_time < (SELECT MIN(insert_time::date) FROM public.mylog) + INTERVAL '2 days'

答案 1 :(得分:0)

DELETE 来自public.mylog WHERE insert_time&lt;现在()* 60 * 60 * 48