Thread: adding a generated column to a table?
If I have a table containing a date field, say:
create temporary table tmp1 as select now()::date as evtdate;
SELECT 1
SELECT 1
select DATE_PART('year', evtdate)::integer as year from tmp1;
year
------
2024
(1 row)
year
------
2024
(1 row)
Is there some way of doing something like the following?:
alter table tmp1 add column year integer generated always as DATE_PART('year', evtdate)::integer STORED;
ERROR: syntax error at or near "DATE_PART"
LINE 1: ... tmp1 add column year integer generated always as DATE_PART(...
ERROR: syntax error at or near "DATE_PART"
LINE 1: ... tmp1 add column year integer generated always as DATE_PART(...
On 4/22/24 09:05, Celia McInnis wrote: > If I have a table containing a date field, say: > create temporary table tmp1 as select now()::date as evtdate; > SELECT 1 > > select DATE_PART('year', evtdate)::integer as year from tmp1; > year > ------ > 2024 > (1 row) > > Is there some way of doing something like the following?: > > alter table tmp1 add column year integer generated always as > DATE_PART('year', evtdate)::integer STORED; > ERROR: syntax error at or near "DATE_PART" > LINE 1: ... tmp1 add column year integer generated always as DATE_PART(... > https://www.postgresql.org/docs/current/sql-createtable.html GENERATED ALWAYS AS ( generation_expr ) STORED So: generated always as (DATE_PART('year', evtdate)::integer) STORED -- Adrian Klaver adrian.klaver@aklaver.com