Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Calcular la edad execta de una persona (https://www.clubdelphi.com/foros/showthread.php?t=18365)

Jorge Taveras 10-02-2005 02:28:34

Calcular la edad execta de una persona
 
Muy buenas, amigos foristas.
quisiera calcular la edad exacta de una persona a partir de una sentencia sql o
de delphi.... intente usar el datepart(year, fecha), datepart(month,fecha) y
datepart(day,fecha), pero solo el primero me ofrece los años exactos, luego los meses me los dá globales y los dias por igual...
A ver que me dicen, amigos... Gracias de antemano

marcoszorrilla 10-02-2005 07:09:06

Aquí tienes la función que yo utilizo:
Código Delphi [-]
 Function Edad(FechaNacimiento : TDate) : Integer;
 Var
   an, mn, dn : Word;
   ahoy, mhoy, dhoy : Word;
 Begin
   DecodeDate(FechaNacimiento, an, mn, dn);
   DecodeDate(Now, ahoy, mhoy, dhoy);
 
   If  (mn > mhoy) or((mn = mhoy) and (dn > dhoy)) then
    Result:=ahoy - an - 1
   else
    Result:=ahoy - an;
 End;

Esta otra es de Federico Firenze:
Código Delphi [-]
 function DelphiComAr(AFechaNacimiento: TDateTime) : Integer;
 begin
   Result := Trunc((Date - AFechaNacimiento) / 365.25);
 end;

Un Saludo.

Jorge Taveras 13-02-2005 05:25:30

Gracias Marcoszorrilla, la verdad que para lograr lo que queria, pues tuve que agregarle algunos pasos a tu función. Ahí te le dejo por si aca... la concluí hasta donde la queria... Siempre son mil veces agradecias sus colaboraciones.
Function Edad(FechaNacimiento : TDate) :string;
Var
an, mn, dn : Word;
ahoy, mhoy, dhoy : Word;
RAnos, Rmeses, Rdias:word;
resultado:string;
Begin
DecodeDate(FechaNacimiento, an, mn, dn);
DecodeDate(Now, ahoy, mhoy, dhoy);
If (mn > mhoy) or((mn = mhoy) and (dn > dhoy)) then
Ranos:=ahoy - an - 1
else
RAnos:=ahoy - an;
if (mn - mhoy) < 0 then
RMeses:= 12 + (mn - mhoy);
if (mn - mhoy) = 0 then
Rmeses:= 0;
if (mn - mhoy) > 0 then
RMeses:= mn - mhoy;
//
if ranos = 0 then
begin
case Rmeses of
0: Resultado := '';
1: Resultado := 'Un mes';
// else
// Resultado := inttostr(Rmeses) + ' meses';
end;
end
else
begin
if ranos = 1 then
resultado:= 'Un año'
else
resultado:= inttostr(ranos) + ' años'
end;
case Rmeses of
0: Resultado := Resultado + '';
1: Resultado := resultado + 'Un mes';
else
Resultado := resultado + ', ' + inttostr(Rmeses) + ' meses';
end;
result:=resultado;
end;
Esto me tira la edad con los meses, ejemplo 35 años, 3 meses
es +/- la edad exacta. Faltarian los días pero no los necesito por ahora.


La franja horaria es GMT +2. Ahora son las 09:30:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi