Re: Update em campo do tipo date array
Euler Taveira <euler-hNsCO/[email protected]> Tue, 16 Jan 2018 18:35:27 -0300
| Newsgroups | gmane.comp.db.postgresql.brasil |
|---|---|
| Message-ID | <CAHE3wgiiKBDzZjSpPYy0HBuyOo+9t68Gdpnoj=jrbjYFXvPXTA__12838.5864467875$1516138422$gmane$org@mail.gmail.com> |
Em 16 de janeiro de 2018 15:00, Edelson Regis de Lima <[email protected]> escreveu: > Então, essa seria a solução ideal, o problema é que a versão do banco é 9.1, > e essas funções estão disponíveis a partir da 9.3. > E no momento não tenho como atualizar o BD... > A versão 9.1 foi descontinuada a mais de 1 ano. Isso significa que não há versões corretivas para a mesma. Planeje o quanto antes a migração para uma versão recente (a última é a versão 10). > Será que teria uma outra maneira? > Basta criar uma função. euler=# \! cat /tmp/a.sql CREATE OR REPLACE FUNCTION array_remove(a date[], b date) RETURNS date[] AS $$ DECLARE r date[]; x date; BEGIN FOREACH x IN ARRAY a LOOP IF x <> b THEN r := array_append(r, x); END IF; END LOOP; RETURN r; END; $$ LANGUAGE plpgsql; euler=# \i /tmp/a.sql CREATE FUNCTION euler=# create table foo (a date[]); CREATE TABLE euler=# insert into foo values('{''2018-01-01'', ''2018-01-02'', ''2018-01-10''}'); INSERT 0 1 euler=# select a from foo; a ------------------------------------ {2018-01-01,2018-01-02,2018-01-10} (1 row) euler=# select array_remove(a, '2018-01-01') from foo; array_remove ------------------------- {2018-01-02,2018-01-10} (1 row) -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral