PostgreSQL. Как преобразовать даты формата varchar в существующем столбце в даты формата даты - PullRequest
0 голосов
/ 21 апреля 2020

Я совсем новичок в PostgreSQL. Я просмотрел другие существующие темы, документацию и различные поиски в Google, но все еще не могу полностью понять, возможно ли преобразовать существующие значения date, которые фактически являются строками в столбце varchar, в фактический формат даты.

Столбец называется datelaid и имеет тип данных varchar. Таблица с именем init_sa_mains_1

datelaid:

" "
"01-12-2011"
"01-12-2011"
" "
"01-12-2011"
" "

Я попытался изменить тип данных столбца следующим образом, но безуспешно:

ALTER TABLE init_sa_mains_1
    ALTER COLUMN datelaid TYPE date USING datelaid::date;

ALTER TABLE init_sa_mains_1
   CAST(init_sa_mains_1.datelaid as date);

ALTER TABLE init_sa_mains_1 
  ALTER COLUMN datelaid USING datelaid::date;

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(datelaid, 'DD-MM-YYYY');

Может ли кто-нибудь посоветовать возможное решение?

1 Ответ

0 голосов
/ 21 апреля 2020

Вам нужно будет иметь дело с пустыми строками, поскольку они не могут быть преобразованы таким образом. Но вы можете превратить их в значения NULL:

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(nullif(trim(datelaid),''), 'DD-MM-YYYY');
...