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

Responder a