2016-12-15 13:38 GMT+13:00 Patrick B <patrickbake...@gmail.com>: > Olá, > > Eu possuo a seguinte query: > > COPY ( > > SELECT > > uuid, > > clientid, > > * > > FROM > > logging > > WHERE > > logtime > > BETWEEN > > '201611015' > > AND > > '201612015' ) TO '/var/lib/postgresql/arquivo.csv'; > > > Esta query tem que ser manualmente rodada 1x por mês. Por esta razão, > estou fazendo uma PLPGSQL function para que isso seja automatizado. > > CREATE or REPLACE FUNCTION lextract(date_end text) > > RETURNS void AS $$ > > > DECLARE > > date_start date := CURRENT_DATE; > > > begin > > execute ' > > COPY > > ( > > SELECT > > uuid, > > clientid, > > * > > FROM > > logging > > WHERE > > logtime > > BETWEEN > > ' || date_start || ' > > AND > > ' || date_end || ' > > ) > > TO ''/var/lib/postgresql/'|| date_start ||'_logs.csv'''; > > end > > $$ language 'plpgsql'; > > > > Quando chamo a function, recebo este erro: > > select lextract('201611015'); > > ERROR: operator does not exist: timestamp without time zone >= integer > > LINE 13: BETWEEN > > ^ > > HINT: No operator matches the given name and argument type(s). You might >> need to add explicit type casts. > > > No que estou falhando? Obrigado! >
Consegui resolver da seguinte forma: BETWEEN ''' || date_start || ''' AND ''' || date_end || ''' Obrigado. Patrick
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral