Fórum Data de Aniversario #169600
16/07/2003
0
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
Curtir tópico
+ 0
Responder
Posts
16/07/2003
Siro
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+
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+
Responder
Gostei + 0
16/07/2003
Jairroberto
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:
Um abraço,
Jair
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
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)