[firebase-br] Aniversários entre Data1 e Data2

Claiton Rocha claitonrocha em yahoo.com.br
Qui Fev 24 16:35:51 -03 2005


Daniel / Tecnobyte wrote:

>Preciso obter uma lista de aniversariantes entre um período qualquer.
>
>Exemplos:
>
>1. De 25/02 até 05/03
>2. De 25/02 até 10/04
>3. De 15/02 até 25/02
>
>Montei o filtro abaixo e até onde testei parece funcionar corretamente, mas
>ficou bastante extenso e talvez alguém pode ter uma idéia melhor.
>
>Nota: M1, M2, D1 e D2 são parâmetros passados pela aplicação.
>
>(:M1 = :M2 AND EXTRACT(MONTH FROM DataNasc) = :M1 AND
>EXTRACT(DAY FROM DataNasc) BETWEEN :D1 AND :D2)
>OR
>(:M1 <> :M2 AND EXTRACT(MONTH FROM DataNasc) = :M1 AND
>EXTRACT(DAY FROM DataNasc) >= :D1)
>OR
>(:M1 <> :M2 AND EXTRACT(MONTH FROM DataNasc) = :M2 AND
>EXTRACT(DAY FROM DataNasc) <= :D2)
>OR
>(EXTRACT(MONTH FROM DataNasc) > :M1 AND EXTRACT(MONTH FROM DataNasc) < :M2)
>
>Atenciosamente.
>
>Daniel P. Guimarães
>Tecnobyte Informática
>www.tecnobyte.com.br
>
>  
>
para cada período desejado:
PeriodoInicial = (mês inicial * 100) + dia inicial
PeriodoFinal = (mês final * 100) + dia final

where ((cast(extract(month from DataNasc) as integer) * 100) + 
cast(extract(day from DataNasc) as integer)) between :PeriodoInicial and 
:PeriodoFinal

1. De 25/02 até 05/03
Então PeriodoInicial = 225
Então PeriodoFinal = 305 

where ((cast(extract(month from DataNasc) as integer) * 100) + 
cast(extract(day from DataNasc) as integer)) between :PeriodoInicial and 
:PeriodoFinal

2. De 25/02 até 10/04

where ((cast(extract(month from DataNasc) as integer) * 100) + 
cast(extract(day from DataNasc) as integer)) between 225 and 410

3. De 15/02 até 25/02

where ((cast(extract(month from DataNasc) as integer) * 100) + 
cast(extract(day from DataNasc) as integer)) between 215 and 225

Sds.,
Claiton Pereira Rocha
Desenvolvedor de Software





Mais detalhes sobre a lista de discussão lista