我需要每天创建表格,其名称为(yyMMdd)
格式的日期,我试过这个:
dbadmin=> \set table_name 'select to_char(current_date, \'yyMMdd \')'
dbadmin=> :table_name;
to_char
---------
150515
(1 row)
然后尝试使用set参数创建带有表名的表:table_name,但得到了这个
dbadmin=> create table :table_name(col1 varchar(1));
ERROR 4856: Syntax error at or near "select" at character 14
LINE 1: create table select to_char(current_date, 'yyMMdd ')(col1 va...
有没有办法可以在变量中存储一个值,然后将该变量用作表名,或者指定内部select语句首先执行的优先级,以便为我提供所需的名称。
请建议!!!
答案 0 :(得分:1)
试试这个
简而言之,您只需要存储退出的值,这样您就需要做一些额外的工作并执行查询。
\set table_name `vsql -U dbadmin -w d -t -c "select concat('tbl_',replace(to_char(current_date, 'yyMMdd'),' ',''))"`
创建表格
create table :table_name(col1 varchar(1));
(dbadmin@:5433) [dbadmin] *> \d tbl_150515
Schema | public
Table | tbl_150515
Column | col1
Type | varchar(1)
Size | 1
Default |
Not Null | f
Primary Key | f
Foreign Key |