我想把过去12个月的数据保存在Postgresql的一个实体化视图中。
CREATE MATERIALIZED VIEW IF NOT EXISTS last_12_months AS
SELECT a, b, c FROM mytable
WHERE created_at > date_trunc('day',('now'::timestamp - '1 year'::interval)));
问题是'now'在创建视图时被评估,所以数据将永远增长,我想有一个固定的数据范围。
我看到views不接受参数。我想dropcreate view everyday,但我相信有更好的选择。
如果你需要,我找到了问题。原文和解决方案的区别在于'now'与now()
CREATE MATERIALIZED VIEW IF NOT EXISTS last_12_months AS
SELECT a, b, c FROM mytable
WHERE created_at > date_trunc('day',(now() - interval '1 year')));