Data de Aniversario

Delphi

16/07/2003

Tenho um campo data (data de aniversario) gostaria de imprimir somente os aniversariantes de um determinado periodo ( o ano tem que ser ignorado). Como faço no Interbase ? :?: :?:


Claudio Mello

Claudio Mello

Curtidas 0

Respostas

Siro

Siro

16/07/2003

faça assim

Coloque numa query:
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´Select * from suaTABELA´);
Query.SQL.Add (´where extract(day from DATA_NASC) >= :DIA1 and extract(month from DATA_NASC) >= :MES1 and extract(day from DATA_NASC) <= :DIA2 and extract(month from DATA_NASC) <=:MES2´);
Query.SQL.Add(´order by NOME_DO_CLIENTE, DATA_NASC´);
Query.ParambyName(´DIA1´).AsInteger := StrToInt(Copy(edtData_Inicial.Text,1,2));
Query.ParambyName(´MES1´).AsInteger := StrToInt(Copy(edtData_Inicial.Text,4,5));
Query.ParambyName(´DIA2´).AsInteger := StrToInt(Copy(edtData_Final.Text,1,2));
Query.ParambyName(´MES2´).AsInteger := StrToInt(Copy(edtData_Final.Text,4,5));
Query.Open;

T+


GOSTEI 0
Jairroberto

Jairroberto

16/07/2003

Olá, Cláudio!

A resposta do Siro está no caminho certo, mas não está correta. Usando o código escrito por ele você terá uma surpresa se tentar listar os aniversários de 20/01/2003 a 10/02/2003, porque o dia do mês inicial é maior que o dia do mês final. Experimente fazer esta alteração na cláusula WHERE do comando SQL:

WHERE ((EXTRACT(MONTH FROM DATA_NASC) = :MES1) AND (EXTRACT(DAY FROM DATA_NASC) >= :DIA1))
      OR ((EXTRACT(MONTH FROM DATA_NASC) = :MES2) AND (EXTRACT(DAY FROM DATA_NASC) <= :DIA2))
      OR ((EXTRACT(MONTH FROM DATA_NASC) > :MES1) AND (EXTRACT(MONTH FROM DATA_NASC) < :MES2))



Um abraço,
Jair


GOSTEI 0
POSTAR