在PostgreSQL中添加生成的列现有表

dly7yett  于 2022-09-21  发布在  PostgreSQL
关注(0)|答案(2)|浏览(183)

我正尝试在现有表中添加一个生成的列。我有一个TRANSACTION表,在该表中有一个名为DateTime的列(包含时间戳格式的日期和时间)。我想创建一个名为TransactionDate的虚拟列,它将包含从DateTime列派生的日期和时间。

下面是我创建的查询
ALTER TABLE PUBLIC.TRANSACTION ADD列不带时区的TIMESTAMP生成始终为(TIMESTAMP(“DATETIME”)::DATE)存储;

现在我要说的是错误:

错误:在“”DateTime“”第2行或其附近出现语法错误:...未生成时区始终为(Timestamp(“DateTime”...^SQL状态:42601个字符:121

请帮帮我。

qlfbtfca

qlfbtfca1#

你用timestamp()做什么?

对于生成的列,应如下所示-

ALTER TABLE transaction ADD COLUMN "transactionDate" timestamp without time zone GENERATED ALWAYS AS ("dateTime"::date) STORED;

ALTER TABLE transaction ADD COLUMN "transactionDate" timestamp without time zone GENERATED ALWAYS AS ("dateTime"::timestamp) STORED;

小提琴here

iq3niunx

iq3niunx2#

dateTime已经是时间戳,因此您不需要从它创建时间戳。所以只是:(见demo)

alter table transaction  
      add column "transactionDate" date
         generated always as ("dateTime"::date) stored;

相关问题