Fórum Calcular idade numa Procedure #38853

19/09/2003

0

Alguem sabe como eu faço pra calcular idade em anos, de alguem, numa stored procedure, tendo a data de nascimento e a data atual?


Rafael_sangalli

Rafael_sangalli

Responder

Posts

19/09/2003

Tio Frank

CARA EU USO ESSA AQUI ... DIRETO NO DELPHI ... PROVAVLEMENTE VC USA DELPHI TB NÉ ... VE SE CONSEGUE ALGUMA COISA ... QUALQUER COISA MANDA AÍ ... Q A GNT VÊ O Q FAZ ... BLZ


VAR
varIDADE: INTEGER;
DIA1, DIA2, MES1, MES2, ANO1, ANO2: WORD;
BEGIN
IF DT_NASC.TEXT <> ´ / / ´ THEN
BEGIN
DECODEDATE(DATE, ANO1, MES1, DIA1);
DECODEDATE(DT_NASC.DATE, ANO2, MES2, DIA2);
varIDADE := ANO1 - ANO2;
IF MES2 < MES1 THEN
IDADE.TEXT := INTTOSTR(varIDADE)
ELSE
BEGIN
IF ((MES2 = MES1) AND (DIA2 <= DIA1)) THEN
IDADE.TEXT := INTTOSTR(varIDADE)
ELSE
IDADE.TEXT := INTTOSTR(varIDADE - 1);
END;
END;
end;


Responder

Gostei + 0

19/09/2003

Rafael_sangalli

Valeu pela ajuda, mas ainda num deu muito certo, o problema eh q eu realmente preciso fazer a conversão dentro da stored procedure - eh a unica forma q dah certo, estou tentando de tudo aki ainda naum deu certo, agradeço qq ajua


Responder

Gostei + 0

19/09/2003

Afarias

set term ^;

create procedure pr_idade_clientes returns (nome varchar(30), idade integer) as
declare variable AnoNasc Integer;
declare variable MesNasc Integer;
declare variable DiaNasc Integer;
declare variable Ano Integer;
declare variable Mes Integer;
declare variable Dia Integer;
declare variable vDataNasc Date;
begin
Ano = extract(year from current_date);
Mes = extract(month from current_date);
Dia = extract(day from current_date);
for select Nome, DataNasc from Clientes into :Nome, :vDataNasc do
begin
AnoNasc = extract(year from vDataNasc);
MesNasc = extract(month from vDataNasc);
DiaNasc = extract(day from vDataNasc);
Idade = Ano - AnoNasc;
if ((MesNasc < Mes) or ((MesNasc = Mes) and (DiaNasc < Dia))) then
Idade = Idade - 1;
suspend;
end
end^


<< é uma idéia >>

T+


Responder

Gostei + 0

20/09/2003

Rafael_sangalli

Valeu, funcionou legal!!!


Responder

Gostei + 0

23/07/2008

Powerlog Tecnologia

Uma pequena correçãozinha, quando calculava idade em que o aniversário ainda não tinha ocorrido no ano...

set term ^; 

create procedure pr_idade_clientes returns (nome varchar(30), idade integer) as 
declare variable AnoNasc Integer; 
declare variable MesNasc Integer; 
declare variable DiaNasc Integer; 
declare variable Ano Integer; 
declare variable Mes Integer; 
declare variable Dia Integer; 
declare variable vDataNasc Date; 
begin 
  Ano = extract(year from current_date); 
  Mes = extract(month from current_date); 
  Dia = extract(day from current_date); 
  for select Nome, DataNasc from Clientes into :Nome, :vDataNasc do 
  begin 
    AnoNasc = extract(year from vDataNasc); 
    MesNasc = extract(month from vDataNasc); 
    DiaNasc = extract(day from vDataNasc); 
    Idade = Ano - AnoNasc; 
    if ((Mes< MesNasc) or ((MesNasc = Mes) and (Dia < DiaNasc))) then 
        Idade = Idade - 1; 
    suspend; 
    end 
end^ 


Valeu


Responder

Gostei + 0

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

Aceitar