To dlatego, że time
nie można przekonwertować (przesyłać) na timestamp
(ani ich warianty związane ze strefą czasową) w PostgreSQL. Np. to również się nie powiedzie:
SELECT 'now'::time::timestamp
W takich przypadkach powinieneś użyć USING
klauzula w Twojej ALTER TABLE
oświadczenie (jeśli możesz je edytować bezpośrednio):
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
Twoje zapytanie będzie wyglądać np.:
ALTER TABLE "my_model"
ALTER COLUMN "column_name"
SET DATA TYPE TIMESTAMP WITH TIME ZONE USING 'yesterday'::date + "column_name"