如何使用 postgres sql 创建名称中带有日期时间的 table
How to create table with datetime in its name using postgres sql
有没有一种方法可以完全使用 postgres sql.
创建一个名称上带有日期时间的 table
考虑典型的创建 table:
CREATE TABLE someNewTable AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate;
我需要的是在 table 名称中附加时间戳。时间戳是动态创建的。我知道这不是一种常见的方式,但需要用于存档目的。那么有没有办法在纯 postgres 中做到这一点 sql?
CREATE TABLE someNewTableYYYYMMDDHHMMSS AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate;
提前致谢!
您似乎想要执行动态查询:
https://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
那么你需要这样的东西:
execute 'CREATE TABLE someNewTable' ||
to_char(current_timestamp, 'YYYYMMDDHHMMSS') ||
' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;'
或者,如果你想在 psql
中 运行 它,那么你还需要使用 DO
运算符:
DO $$
begin
execute 'CREATE TABLE someNewTable' ||
to_char(current_timestamp, 'YYYYMMDDHHMMSS') ||
' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;'
end
$$ language plpgsql;
有没有一种方法可以完全使用 postgres sql.
创建一个名称上带有日期时间的 table考虑典型的创建 table:
CREATE TABLE someNewTable AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate;
我需要的是在 table 名称中附加时间戳。时间戳是动态创建的。我知道这不是一种常见的方式,但需要用于存档目的。那么有没有办法在纯 postgres 中做到这一点 sql?
CREATE TABLE someNewTableYYYYMMDDHHMMSS AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate;
提前致谢!
您似乎想要执行动态查询: https://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
那么你需要这样的东西:
execute 'CREATE TABLE someNewTable' ||
to_char(current_timestamp, 'YYYYMMDDHHMMSS') ||
' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;'
或者,如果你想在 psql
中 运行 它,那么你还需要使用 DO
运算符:
DO $$
begin
execute 'CREATE TABLE someNewTable' ||
to_char(current_timestamp, 'YYYYMMDDHHMMSS') ||
' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;'
end
$$ language plpgsql;