Edelson Regis de Lima
2018-01-16 15:15:16 UTC
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
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*
*Edelson Regis de Lima*