move rows to another table

CREATE TABLE history_0 AS
WITH moved_rows AS (
    DELETE FROM current
    WHERE current.date < (now() - '6 Months'::interval)
    RETURNING * -- or specify columns
)
SELECT * FROM moved_rows;

fast select distinct with index

WITH RECURSIVE t AS (
        ( SELECT flows.hostname
           FROM flows
          ORDER BY flows.hostname
         LIMIT 1)
        UNION ALL
         SELECT ( SELECT flows.hostname
                   FROM flows
                  WHERE flows.hostname::text > t_1.hostname::text
                  ORDER BY flows.hostname
                 LIMIT 1) AS hostname
           FROM t t_1
          WHERE t_1.hostname IS NOT NULL
        )
 SELECT t.hostname
   FROM t
  WHERE t.hostname IS NOT NULL;