2016-12-07 67 views
0

是否有一種方法可以使用postgres sql創建其名稱上帶有日期時間的表。如何使用postgres在其名稱中使用datetime創建表sql

考慮典型創建表:

CREATE TABLE someNewTable AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate; 

我需要的是一個加上時間戳的表名。時間戳是動態創建的。我知道這不是一種常見的方式,但需要存檔目的。那麼有沒有辦法在純PostgreSQL中做到這一點?

CREATE TABLE someNewTableYYYYMMDDHHMMSS AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate; 

在此先感謝!

+0

您必須通過腳本(如存儲過程)或一些外部腳本(如bash,python,vbscript等)動態編寫SQL語句。 – JNevill

回答

1

看起來要執行動態查詢: 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;

+0

謝謝@ stas.yaranov! – RonPringadi

+0

還要注意,EXECUTE命令不是標準的SQL,因此將始終需要DO $$ BEGIN .... language plpgsql; – RonPringadi

相關問題