首页 > 解决方案 > 重命名 PostgreSQL 表以包含当前时间戳

问题描述

请帮忙,我想通过添加 current_date 来更改现有表的名称,例如 trans_table20210723

我试过使用查询

DO $$ 
BEGIN 
  EXECUTE format('ALTER TABLE %I RENAME TO %I_%s', 'DETAILDATABT','DETAILDATABT', to_char(current_date,'YYYYMMDD')::TEXT); 
END $$;

但仍然无法正常工作

在此处输入图像描述

标签: sqlpostgresql

解决方案


您需要将连接的值作为单个 %I参数的值传递并去掉%s部分:

DO $$ 
BEGIN 
  EXECUTE format('ALTER TABLE %I RENAME TO %I', 
                 'DETAILDATABT', 
                 concat('DETAILDATABT', '_', to_char(current_date,'YYYYMMDD')); 
END $$;

推荐阅读