Fórum Para os Feras em SQL/INTERBASE #37358

12/07/2003

0

Vejam a query abaixo:

SELECT P.DT_NASCIMENTO, P.ST_NOME
FROM PESSOA P
WHERE EXTRACT(DAY FROM P.DT_NASCIMENTO) BETWEEN 1 AND 10
AND EXTRACT(MONTH FROM P.DT_NASCIMENTO) = 1
ORDER BY P.DT_NASCIMENTO

Nesta query seleciono os registro que tem o dia da data de nascimento entre 1 e 10, e o mês 1 (janeiro).

Só que preciso que seja ordenada pelo DIA e não pela data. Quero mandar cartas de aniversário, para isso o ANO de nascimento não importa, concordam?

Desse modo que fiz quem nasceu dia 7/1/1995 vem antes de quem nasceu 1/1/2001 pois o ano 1995 é menor que 2001.

Já tentei dar um order by como abaixo, mas não funcionou.

ORDER BY EXTRACT(MONTH FROM P.DT_NASCIMENTO)

Por favor, ajude-me.

Roberto Santos Silva
Brasília-DF


Tenil

Tenil

Responder

Posts

12/07/2003

Baddream

Faça um order by com o número da coluna, e coloque o dia do nascimento no query:

SELECT EXTRACT(DAY FROM P.DT_NASCIMENTO),P.DT_NASCIMENTO, P.ST_NOME
FROM PESSOA P
WHERE EXTRACT(DAY FROM P.DT_NASCIMENTO) BETWEEN 1 AND 10
AND EXTRACT(MONTH FROM P.DT_NASCIMENTO) = 1
ORDER BY 1,2

O comando ORDER BY 1,2 indica para o firebird que você quer ordenar pela coluna 1 (extract day from p.dt_nascimento) e, quando essas forem iguais, ordenar pela data de nascimento. Funciona, sem problemas, no Firebird 1.0.2.

Acredito que assim o comando funcionará da forma que você quer. 8)


Responder

Gostei + 0

12/07/2003

Tenil

Kra, valeu, funcionou!!!

Muito obrigado.

Olha como ficou o final:

SELECT EXTRACT(DAY FROM P.DT_NASCIMENTO) ST_DIA, P.*
FROM PESSOA P
WHERE EXTRACT(DAY FROM P.DT_NASCIMENTO) BETWEEN 1 AND 10
AND EXTRACT(MONTH FROM P.DT_NASCIMENTO) = 1
ORDER BY 1, P.ST_NOME

Valeu brother.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar