Cela vous aiderait-il ?
Cela utilise le formatage de date intégré dans la fonction TO_CHAR. Je ne suis pas tout à fait à l'aise avec postgresql, donc quelques ajustements pourraient être nécessaires.
UPDATE
TABLENAME
SET
year = TO_CHAR(date, 'YYYY'),
date = TO_CHAR(date, 'YYYYMM');
Si la colonne "année" n'existe pas déjà, il faudra la créer avec un ALTER TABLE
déclaration d'abord
ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type] {collation} {column_contstraint};
Je recommanderais de vérifier la documentation pour une utilisation correcte.
EDIT :si vous vous inquiétez du temps qu'il faudrait pour mettre à jour toutes les lignes (je vous ai vu commenter une autre réponse indiquant que vous aviez environ 2 millions d'enregistrements), alors je vous suggère de lire cet article .
Il explique qu'il peut être plus rapide de créer le tableau à partir de zéro avec les données au lieu de mettre à jour chaque ligne.