Sql 更新Postgres表中的日期范围

Sql 更新Postgres表中的日期范围,sql,postgresql,date,Sql,Postgresql,Date,我有一张有日期的桌子: select id,date date_ranges where range_id = 1; 1 2016-04-12 2 2016-04-13 3 2016-04-14 我还有一个数组: 例如: array('2016-04-11','2016-04-12','2016-04-13','2016-04-14','2016-04-15') 或 如何在不更改现有表值的情况下将新值从数组插入到表中? 若我有第二个数组,如何从表中删除值2016-04-12 帮助plz,我需

我有一张有日期的桌子:

select id,date date_ranges where range_id = 1;
1 2016-04-12
2 2016-04-13
3 2016-04-14
我还有一个数组:

例如:

array('2016-04-11','2016-04-12','2016-04-13','2016-04-14','2016-04-15')

如何在不更改现有表值的情况下将新值从数组插入到表中? 若我有第二个数组,如何从表中删除值2016-04-12


帮助plz,我需要一个查询)

从提供适当的信息开始:Postgres版本、表定义。
array('2016-04-13','2016-04-14','2016-04-15')
WITH current_values AS (
    SELECT generate_series('2016-04-13'::DATE, '2016-04-17'::DATE, '1 day')::DATE AS date
), 
deleted_values AS (
    DELETE FROM date_ranges WHERE date NOT IN (SELECT * FROM current_values) RETURNING id
)
INSERT INTO date_ranges ("date", range_id) 
    WITH new_values AS (
        SELECT new."date" 
        FROM current_values AS new 
        LEFT JOIN date_ranges AS old 
            ON old."date" = new."date" 
        WHERE old.id IS NULL
    ) 
    SELECT date, 1 FROM new_values;