Calcular edad

14/03/2005 - 14:05 por Carlos | Informe spam
Cordial saludo.

Quiero calcular la edad de una persona en años y meses de acuerdo a la fecha
de nacimiento.

Alguien sabe como hacerlo??

Agradezco la ayuda que me puedan brindar.

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
14/03/2005 - 15:18 | Informe spam
CREATE FUNCTION dbo.udfEdad(@FNacim smalldatetime, @AFecha smalldatetime)
RETURNS smallint AS BEGIN
DECLARE @Edad smallint
SET @Edad = Year(@AFecha) - Year(@FNacim)
IF Month(@AFecha) < Month(@FNacim)
SET @Edad = @Edad - 1
ELSE
IF Month(@AFecha) = Month(@FNacim) AND Day(@AFecha) < Day(@FNacim)
SET @Edad = @Edad - 1
RETURN @Edad
END

Para usar la función, por ejemplo:

SELECT dbo.udfEdad('19771024', GetDate())

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvp-access.com
Respuesta Responder a este mensaje
#2 Juan Sánchez
14/03/2005 - 16:12 | Informe spam
tal vez esto te sirva.

Slds,
Juan



declare @FN as datetime
declare @FA as datetime
declare @Meses as int
declare @Anios as int

set @FN = '19700609'
set @FA = '20050730'

set @Meses = datediff(m, @FN, @FA)
set @Anios = round(@Meses / 12,0, 1)

select @Anios, @Meses - @Anios * 12


"Carlos" escribió en el mensaje
news:
Cordial saludo.

Quiero calcular la edad de una persona en años y meses de acuerdo a la


fecha
de nacimiento.

Alguien sabe como hacerlo??

Agradezco la ayuda que me puedan brindar.

Respuesta Responder a este mensaje
#3 Carlos
14/03/2005 - 16:39 | Informe spam
Hola juan.

Me funciona bien para la edad en años pero en meses no. EJ:

set @FN = '20050509'
set @FA = '20050715'

Como puedes ver la edad en meses seria 1 y el sistema me muestra 2

No entiendo que hace:
select @Meses - @Anios * 12

Agradezco la ayuda que me has brindado.



"Juan Sánchez" wrote:

tal vez esto te sirva.

Slds,
Juan



declare @FN as datetime
declare @FA as datetime
declare @Meses as int
declare @Anios as int

set @FN = '19700609'
set @FA = '20050730'

set @Meses = datediff(m, @FN, @FA)
set @Anios = round(@Meses / 12,0, 1)

select @Anios, @Meses - @Anios * 12


"Carlos" escribió en el mensaje
news:
> Cordial saludo.
>
> Quiero calcular la edad de una persona en años y meses de acuerdo a la
fecha
> de nacimiento.
>
> Alguien sabe como hacerlo??
>
> Agradezco la ayuda que me puedan brindar.
>



Respuesta Responder a este mensaje
#4 Juan Sánchez
14/03/2005 - 17:00 | Informe spam
De acuerdo a los datos que indicas, la edad en meses sí sería 2, el problema
tal vez se te presenta si p.ej.

set @FN = '20050515'
set @FA = '20050709'

allí sí sería 1 pero el resultado da dos.
Va modificada la rutina, lo único que agregué es la condición. Te comento
lo que hace el cálculo.


declare @FN as datetime
declare @FA as datetime
declare @Meses as int
declare @Anios as int

set @FN = '20050515'
set @FA = '20050709'

mes, por eso es que con las fechas del ejemplo devuelve 2.
set @Meses = datediff(m, @FN, @FA)

total de meses calculados le resto 1.
if day(@FA) < day(@FN)
set @Meses = @Meses - 1

set @Anios = round(@Meses / 12,0, 1)

calcular el residuo del total de meses dividido para 12.
select @Anios, @Meses - @Anios * 12


"Carlos" escribió en el mensaje
news:
Hola juan.

Me funciona bien para la edad en años pero en meses no. EJ:

set @FN = '20050509'
set @FA = '20050715'

Como puedes ver la edad en meses seria 1 y el sistema me muestra 2

No entiendo que hace:
select @Meses - @Anios * 12

Agradezco la ayuda que me has brindado.



"Juan Sánchez" wrote:

> tal vez esto te sirva.
>
> Slds,
> Juan
>
>
>
> declare @FN as datetime
> declare @FA as datetime
> declare @Meses as int
> declare @Anios as int
>
> set @FN = '19700609'
> set @FA = '20050730'
>
> set @Meses = datediff(m, @FN, @FA)
> set @Anios = round(@Meses / 12,0, 1)
>
> select @Anios, @Meses - @Anios * 12
>
>
> "Carlos" escribió en el mensaje
> news:
> > Cordial saludo.
> >
> > Quiero calcular la edad de una persona en años y meses de acuerdo a la
> fecha
> > de nacimiento.
> >
> > Alguien sabe como hacerlo??
> >
> > Agradezco la ayuda que me puedan brindar.
> >
>
>
>
Respuesta Responder a este mensaje
#5 Carlos
15/03/2005 - 15:17 | Informe spam
Cordial saludo.

Hay alguna forma de implementar esto en un select????
es que estoy trabajando con php; entonces debe quedar en un select.

Ya lo he intentado pero no me sale.

Agradezco la ayuda que me has brindado.

declare @FN as datetime
declare @FA as datetime
declare @Meses as int
declare @Anios as int

set @FN = '20050515'
set @FA = '20050709'

mes, por eso es que con las fechas del ejemplo devuelve 2.
set @Meses = datediff(m, @FN, @FA)



al
total de meses calculados le resto 1.
if day(@FA) < day(@FN)
set @Meses = @Meses - 1

set @Anios = round(@Meses / 12,0, 1)

calcular el residuo del total de meses dividido para 12.
select @Anios, @Meses - @Anios * 12
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida