C'est parce que time
ne peut pas être converti (casté) en timestamp
(ni leurs variantes liées au fuseau horaire) dans PostgreSQL. F. ex. cela échouera également :
SELECT 'now'::time::timestamp
Dans ces cas, vous devez utiliser le USING
clause dans votre ALTER TABLE
déclaration (si vous pouvez la modifier directement) :
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
Votre requête ressemblera, par exemple :
ALTER TABLE "my_model"
ALTER COLUMN "column_name"
SET DATA TYPE TIMESTAMP WITH TIME ZONE USING 'yesterday'::date + "column_name"