Companheiro, A melhor forma de não ter problemass com ordenação de datas é usar sempre o formato AAAAMMDD independentemente do separador que use dá sempre certa os queries são bastante rápidos. De contrário tem degradação. Equanto o seu banco de dados tem meio milhar de registos você não nota, mas à medida que ele vai engordando você começa a perceber quanto maior for o recurso a funções, ainda que nativas, maior a degradação pois o banco tem de resolver para você o um "extract" por cada registo da tabela selecionada. Espero ter ajudado mais do que desajudado. Disponha
Mário Reis No dia 20 de Agosto de 2012 15:12, Ramiro Pamponet <[email protected]>escreveu: > Olá Osvaldo, > > Na minha subquery eu quero que conste as datas de aniversário com o mês > maior ou igual ao mês atual, e a partir daí (na minha query principal), eu > quero que apenas as datas do resultado da minha subquery mostrem aquelas > que possuem o dia maior ou igual ao dia atual, ordenando o resultado final > por mês e dia. > > Vou tentar a solução apresnetada pelo Fabrizio > > *SELECT nome, aniversario FROM clientes > WHERE extract(MONTH from aniversario) > extract(MONTH from now()) > OR (extract(MONTH from aniversario) = extract(MONTH from now()) AND > extract(DAY from aniversario) >= extract(DAY from now())) > ORDER BY extract(MONTH from aniversario), extract(DAY from aniversario) * > > e ver se consigo o resultado esperado. Valeu Galera! > > > > > Em 19 de agosto de 2012 23:00, Osvaldo Kussama > <[email protected]>escreveu: > >> Em 19/08/12, Ramiro Pamponet<[email protected]> escreveu: >> > E seu eu fizesse uso de subqueryes do tipo: >> > >> ----------------------------------------------------------------------------------------------------------------------------- >> > select nome, aniversario from clientes >> > where extract(DAY from aniversario) >= extract(DAY from now()) >> > in >> > (select nome, aniversario from clientes >> > where extract(MONTH from aniversario) >= extract(MONTH from now())) >> > order by extract(MONTH from aniversario), extract(DAY from aniversario) >> > >> ----------------------------------------------------------------------------------------------------------------------------- >> > mas com um pequeno detalhe, essa consulta me retorno o seguinte erro: >> > >> ----------------------------------------------------------------------------------------------------------------------------- >> > ERRO: subconsulta tem muitas colunas >> > LINE 3: in >> > ^ >> > ********** Error ********** >> > ERRO: subconsulta tem muitas colunas >> > SQL state: 42601 >> > Character: 103 >> > >> ----------------------------------------------------------------------------------------------------------------------------- >> > Sendo que a quantidade de colunas nas duas consultas é a mesma, 2 (nome >> e >> > aniversario). Onde estou errando? >> > >> > Era para fazer a consulta por mês e depois a partir do resultado dessa >> > consulta fazer outra por dia, e por fim ordenar por mês e dia. >> > >> > Caso não seja possível, vou começar a pensar na possibilidade de >> utilizar a >> > função to_char (aniversario, 'MMDD'), que já andei lendo que pode ser >> > descontinuada nas próximas versões do PostgreSQL. Valeu Galera e Um >> Grande >> > Abraço a Todos! >> > >> >> Não consegui ver sentido em sua cláusula IN. >> O que você deseja que conste do resultado de sua sub-query? >> >> Osvaldo >> >> Obs.: Aonde você leu que a função to_char será descontinuada? >> _______________________________________________ >> pgbr-geral mailing list >> [email protected] >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Com os meus melhores cumprimentos Mário Agostinho Reis Esta mensagem contém informação de natureza confidencial e é exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano, receber este email agradecemos que não o copie nem o reenvie e que nos notifique do ocorrido através do email de resposta.
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
