Boa tarde pessoal.

Estou apanhando um pouco para dar um Replace em uma data dentro de um campo
do tipo date[]

Exemplo: digamos que meu campo occurrencedates date[] tenha as três datas:
[2018-02-01,2018-02-02,2018-02-03]
Quero por exemplo apagar o que for 2018-02-03 em todos os registros em que
a mesma for encontrada.
Para encontrar o registro estou fazendo um cast para string e usando o
ilike.
No select eu consigo retornar já sem a data normalmente.
O problema está na hora de dar o Update, não estou conseguindo converter
corretamente para que o postgre entenda que é um array de data.

Para fazer um select:

select
  occurrencedates as com_a_data,
  string_to_array(replace(array_to_string(occurrencedates, ','),
'2018-02-03', ''), ',') sem_a_data
FROM minha_tabela
where
  (occurrencedates::varchar ilike '%2018-02-03%')

com_a_data | sem_a_data
"{2018-02-01,2018-02-02,2018-02-03}" |  "{2018-02-01,2018-02-02,""}"

Ou seja, o resultado sem_a_data já é um array.

Daí eu tento fazer:

update minha_minha
set occurrencedates =
string_to_array(replace(array_to_string(occurrencedates, ','),
'2018-02-03', ''), ',') where (occurrencedates::varchar ilike
'%2018-02-03%')

E dá o seguinte erro:
column "occurrencedates" is of type date[] but expression is of type text[]

Ou seja, tenho que converter de alguma maneira o text[] para date[]

Se alguém puder ajudar agradeço desde já.

Abraços

-- 
*Edelson Regis de Lima*
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a