sql - 重命名 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 $$;
但仍然无法正常工作
解决方案
您需要将连接的值作为单个 %I
参数的值传递并去掉%s
部分:
DO $$
BEGIN
EXECUTE format('ALTER TABLE %I RENAME TO %I',
'DETAILDATABT',
concat('DETAILDATABT', '_', to_char(current_date,'YYYYMMDD'));
END $$;
推荐阅读
- azure - Cosmos DB:创建文档时如何将分区键的值设置为 id?
- firebase-hosting - Firebase 托管部署错误 HTTP 错误:500,无法创建通道
- javascript - 使这些数组函数更紧凑的任何方法
- passwords - 使用开膛手约翰生成回文
- python - Grpc:TypeError:“UnaryStreamCall”对象不可迭代
- kubernetes - 如何使用模式/正则表达式/...,使用 kustomize configMapGenerator 将多个配置文件添加到 configMap?
- linux-kernel - 设备树控制十六进制到参考节点
- excel - 在 Excel/VBA 中,如何根据单元格值将公式应用于范围?
- c - int的未知系统位大小,如何创建掩码
- visual-studio - Sonarqube & Roselyn 分析仪配置