Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建连接当前年份和月份的表_Sql_Postgresql - Fatal编程技术网

Sql 创建连接当前年份和月份的表

Sql 创建连接当前年份和月份的表,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

我想在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,
                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;
$$