Sql 创建连接当前年份和月份的表
我想在Postgresql中创建一个表(如果还没有),并在其中插入一些数据 表必须具有以下名称约定,即testyyyymm,其中yyyymm是当前年份和月份 我尝试了各种方法并停止使用动态sqlSql 创建连接当前年份和月份的表,sql,postgresql,Sql,Postgresql,我想在Postgresql中创建一个表(如果还没有),并在其中插入一些数据 表必须具有以下名称约定,即testyyyymm,其中yyyymm是当前年份和月份 我尝试了各种方法并停止使用动态sql DO $$ BEGIN EXECUTE 'CREATE TABLE IF NOT EXISTS ' || 'select concat(''test_'', (select to_char(now(), ''yyyymm'')))::text'|| ' (temp_id INT NOT NULL
DO
$$
BEGIN
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || 'select concat(''test_'', (select to_char(now(), ''yyyymm'')))::text'|| ' (temp_id INT NOT NULL,
temp_name varchar(150),
PRIMARY KEY (temp_id))';
END;
$$
如果我仅使用此零件进行选择
select concat('test_', (select to_char(now(), 'yyyymm')))::text
我得到了想要的名称,但它在动态sql中不起作用
DO
$$
BEGIN
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || 'select concat(''test_'', (select to_char(now(), ''yyyymm'')))::text'|| ' (temp_id INT NOT NULL,
temp_name varchar(150),
PRIMARY KEY (temp_id))';
END;
$$
我试图删除这一行,并用一个静态名称替换它,它就像一个符咒,所以我确信,问题在于表名
DO $$
BEGIN
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || 'test_table' || ' (temp_id INT NOT NULL,
temp_name varchar(150),
PRIMARY KEY (temp_id))';
END;
$$
我如何以人道的方式实现这一点
提前谢谢 你很接近<不需要代码>选择,只需按原样使用转换即可
DO $$
BEGIN
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || concat('Log_',to_char(now(), 'yyyymm')) || ' (temp_id INT NOT NULL,
temp_name varchar(150),
PRIMARY KEY (temp_id))';
END;
$$