2017-02-28 60 views
0

我有以下表在最早的日期後兩天刪除行?

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年2月24日00:00:00.064049 + 00」

我怎樣才能刪除包含所有行最早的insert_time和之後的一天。在我們的例子中,查詢會刪除在2017-02-24和2017-02-25上插入的行,並且在2017-02-25

回答

0

這種方法的策略是使用子查詢找到最早插入的日期,然後刪除所有記錄的日期均小於此最早日期加上兩天。在您的樣本數據的情況下,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' 
0

DELETE FROM public.mylog WHERE insert_time < NOW()* 60 * 60 * 48

+0

這是無效的Postgres的。沒有'time()'函數 –

相關問題