sql - 创建名称中包含当前日期的架构

标签 sql postgresql

我正在尝试创建一个名称中包含今天日期的新架构。命名如下

select concat('Copy_', replace(now()::date::text,'-',''))
Copy_20181102

所以我尝试:

CREATE SCHEMA concat('Copy_', replace(now()::date::text,'-',''))
    AUTHORIZATION postgres;

ERROR: syntax error at or near "(" LINE 1: CREATE SCHEMA concat('Copy_', replace(now()::date::text,'-',... ^ SQL state: 42601 Character: 21

我该如何解决这个问题?

最佳答案

使用纯 SQL 无法做到这一点。您需要使用过程语言:

--Anonymous block
DO $$
BEGIN

    EXECUTE format('CREATE SCHEMA %I AUTHORIZATION postgres',
            concat('Copy_', replace(now()::date::text,'-','')));

END $$;

有关动态命令的更多信息 here .

关于sql - 创建名称中包含当前日期的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121673/

相关文章:

sql - SQL Job运行一些select语句 '\'附近的语法不正确。 [SQLSTATE 42000](错误102)

sql - 如何在 Teradata SQL 上根据某些条件保留特定组的第一行?

postgresql - 从 Macports 切换到 Homebrew 后,Rails 和 Postgres 相处得并不好; PG错误: ERROR: unrecognized time zone name: "UTC"

ruby-on-rails - rails 4.1 通过 hstore 验证任意字段

mysql - 选择列出的字段以外的所有字段?

java - 将 @EmbeddedId 表示为 H2 数据库的 SQL

sql - 在 JOIN ON 子句中引用列别名

postgresql - 预写日志记录如何提高 Postgres 中的 IO 性能?

javascript - 在 Sequelize 中预先加载模型上的 findAll()?

postgresql - 如何使用 SQLModel for FastAPI 创建 PostgreSQL 'text' 列