我有下表
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上插入的行
答案 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