Fórum Pesquisa aniversariantes entre 2 datas #370155

01/05/2009

0

Olá pessoal,

Como faço uma pesquisa em um campo do tipo date (armazena a data de nascimento) que me retorne os aniversariatens entre 2 datas, por exemplo, como pesquisar as pessoas que aniversariam entre 10/04 e 10/05?
Essa pesquisa tem que ignorar o ano das 2 datas (só deve levar em conta o dia e o mes), pois como disse é para retornar os aniversariantes.

Estou usando DELPHI 7 / IBX / FIREBIRD 1.5

Grato

Luiz Carlos


L_carlos

L_carlos

Responder

Posts

01/05/2009

Jcfiora

L_CARLOS, Boa tarde, acredito que esse sql faça o que voce precisa.


Exemplo para um select na tabela ´PESSOAS´ com a estrutura :
ID_PESSOA INTEGER,
NOME VARCHAR(90),
DATA_NASC DATE

Observação :

A função LPAD é uma ´UDF´, portanto deve estar registrada no database.Para
registrar essa UDF, utilize o comando abaixo :

DECLARE EXTERNAL FUNCTION lpad
CSTRING(255), INTEGER, CSTRING(1)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT ´IB_UDF_lpad´ MODULE_NAME ´ib_udf´;

Para mais detalhes de uma olhada em :

C:\Arquivos de programas\Firebird\Firebird_1_5\UDF\ib_udf.sql

**********************************************************
Comando SQl
**********************************************************

SELECT
P.ID_PESSOA,
P.NOME,
LPAD(EXTRACT(DAY FROM P.DATA_NASC),2,0) ||´/´||
LPAD(EXTRACT(MONTH FROM P.DATA_NASC),2,0) AS DATA_NIVER
FROM
PESSOAS P
WHERE
EXTRACT(MONTH FROM P.DATA_NASC) BETWEEN 1 AND 12 /*Faixa de meses desejados*/
AND
EXTRACT(DAY FROM P.DATA_NASC) BETWEEN 1 AND 31 /*Faixa de dias desejados*/
ORDER
BY
EXTRACT(MONTH FROM CL.DATA_NASC) ASC,
EXTRACT(DAY FROM CL.DATA_NASC) ASC


Responder

Gostei + 0

06/05/2009

L_carlos

Jean, mas eu vou ter que distribuir essa UDF com meu aplicativo?

Luiz


Responder

Gostei + 0

06/05/2009

Jcfiora

Luiz , boa noite..

Não precisa se preocupar com a distribuição da UDF, quando voce faz a instalação do Firebird ela ja acompanha o mesmo.


Responder

Gostei + 0

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

Aceitar