如何使用current_date()在预定义的时间间隔(例如月份)上自动创建表

时间:2018-01-28 18:43:30

标签: postgresql presto

我想每月使用存储的数据在我的postgresql数据库中自动创建一个表。每次查询运行时,我都希望表名动态更改(例如table_JAN2018,table_FEB2018,table_MAR2018等),以便在旧表保持完整时使用该月的新数据创建新表。

经过研究,我发现我可以实现这个(?),如下面的链接所述:Table name as a PostgreSQL function parameter

所以我以同样的方式尝试了下面的代码:

CREATE FUNCTION table_Jan2018() RETURNS void as 
$func$
BEGIN 
EXECUTE

'create table' || to_char(current_date, '%b/%Y'|| 'as select * from
(
select
id,product, client, purchase_date, sales_status,
case when complete_transaction_date is null then cast(purchase_date as date)
when verified  is not null  then cast(complete_transaction_date  as date)
end as purchase
from clients
where sales_status in ('state1','state2')
and test=false
)
where purchase>=(current_date - interval '30' day)';
end;

但是,我得到的是presto中的以下错误消息: “在输入'CREATE FUNCTION'中没有可行的选择”

以上功能是否适合我根据需要动态更改表名?还有另一种方法可以达到我的目的吗?

提前谢谢!!

0 个答案:

没有答案