Czy to ci pomoże?
Wykorzystuje to wbudowane formatowanie daty w funkcji TO_CHAR. Nie jestem jednak całkowicie w domu z postgresql, więc może być konieczne wprowadzenie pewnych poprawek.
UPDATE
TABLENAME
SET
year = TO_CHAR(date, 'YYYY'),
date = TO_CHAR(date, 'YYYYMM');
Jeśli kolumna "rok" jeszcze nie istnieje, będziesz musiał ją utworzyć za pomocą ALTER TABLE
najpierw oświadczenie
ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type] {collation} {column_contstraint};
Polecam zapoznanie się z dokumentacją dla prawidłowego użytkowania.
EDYCJA:Jeśli martwisz się, ile czasu zajmie aktualizacja wszystkich wierszy (widziałem, że skomentowałeś inną odpowiedź, że masz około 2 milionów rekordów), sugeruję przeczytanie ten post .
Wyjaśnia, że szybsze może być utworzenie tabeli od podstaw z danymi, zamiast aktualizowania każdego wiersza.