Olá, Newton Você pode fazer assim:
select data from tabela where to_char(data,'DD/MM/YYYY')='19-06-2008'; Mais informações em: http://www.postgresql.org/docs/8.3/interactive/functions-formatting.html http://www.postgresql.org/docs/8.3/interactive/functions-datetime.html []s 2008/6/17 Newton Teixeira do Nascimento Júnior <[EMAIL PROTECTED]>: > Olá comunidade. Estou desenvolvendo uma função que recebe dois > parâmetros: nome da estação (que é uma sigla) e a data do relatório. > > Preciso comparar uma data selecionada pelo usuário (no formato dd/mm/yyyy) > com a data que está na tabela "pas_r" no formato "timestamp with time zone" > > (ex: "2008-04-14 16:32:18-03"). Tentei rodar a função, mas plpgsql não > aceitou a sintaxe. > > > > PROBLEMA: > > > > - Minha função não roda; já fica no parse da sintaxe. O que está errado? > Como corrigir? Existe uma forma melhor? > > > > DÚVIDAS: > > > > - Como faço para extrair apenas a data do formato "timestamp with time > zone" ? Ou a única forma é fazer como estou tentando fazer (ex: EXTRACT(DAY > FROM TIMESTAMP WITH TIME ZONE record2."bh_dthr_ini") = dia) > > > > - Como faço para comparar datas? Em qual formato devo fazer isso, pois o > usuário entra com a data dd/mm/yyyy e data na "pas_r" está formato > yyyy-mm-dd. Qual é a melhor forma de comparar essas informações caso eu > consiga extrair a data de record2."bh_dthr_ini". > > > > > > Pesquisei na lista e procurei na doc, porém não consegui resolver. Peço > ajuda da comunidade, pois estou começando a usar esse SGBD. > > No aguardo online e agradeço pela atenção. > > http://www.postgresql.org/docs/8.2/interactive/functions-datetime.html > > http://www.postgresql.org/docs/8.2/interactive/functions-formatting.html > > > > > > CREATE OR REPLACE FUNCTION aux(character, date) > > RETURNS integer AS > > $BODY$ > > > > DECLARE > > record1 RECORD; > > record2 RECORD; > > subestacao ALIAS FOR $1; > > data ALIAS FOR $2; > > > > dia float; > > mes float; > > ano float; > > > > BEGIN > > > > dia := 17; > > mes := 6; > > ano := 2008; > > --dia := FUNCAO_PARA_EXTRAIR_DIA_DE_DATA(); > > --mes := FUNCAO_PARA_EXTRAIR_MES_DE_DATA(); > > --ano := FUNCAO_PARA_EXTRAIR_ANO_DE_DATA(); > > > > FOR record1 IN SELECT * FROM "subest-equi" LOOP > > > > FOR record2 IN SELECT * FROM "pas_r" WHERE id = > record1."id-equip" AND > > EXTRACT(DAY FROM TIMESTAMP WITH TIME ZONE > record2."bh_dthr_ini") = dia AND > > EXTRACT(MONTH FROM TIMESTAMP WITH TIME ZONE > record2."bh_dthr_ini") = mes AND > > EXTRACT(YEAR FROM TIMESTAMP WITH TIME ZONE > record2."bh_dthr_ini") = ano LOOP > > > > RAISE NOTICE 'Saida %',record2."id"; > > > > END LOOP; > > > > END LOOP; > > > > RETURN 1; > > END; > > > > $BODY$ > > LANGUAGE 'plpgsql' VOLATILE; > > ALTER FUNCTION aux(character, date) OWNER TO postgres; > > > > > > CREATE TABLE "subest-equi" > > ( > > "subest-nome" character varying(10) NOT NULL, > > "id-equip" character varying(20) NOT NULL, > > "nome-equip" character varying(20) NOT NULL, > > flag bit(1), > > CONSTRAINT "primary-key" PRIMARY KEY ("subest-nome", "id-equip") > > ) > > WITH (OIDS=FALSE); > > ALTER TABLE "subest-equi" OWNER TO sage; > > > > CREATE TABLE pas_r > > ( > > bh_dthr_ini timestamp with time zone, > > bh_dthr_fim timestamp with time zone, > > bh_sinonimo integer, > > bh_chave integer, > > bh_indtr integer, > > eqp character(18), > > estacao character(12), > > histper smallint, > > id character(24), > > nome character(42), > > tac character(12), > > tipoe smallint, > > tpeqp smallint > > ) > > WITH (OIDS=FALSE) > > TABLESPACE sagebhref; > > ALTER TABLE pas_r OWNER TO sage; > > > > > > *Newton Teixeira do Nascimento Junior* > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- João Paulo www.dextra.com.br/postgres PostgreSQL
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
