SQL Server - Calcular edad

   
Vista:

Calcular edad

Publicado por Federico (3 intervenciones) el 13/11/2007 19:27:32
Hola, que tal, necesito agregar un campo calculado en una tabla que me muestre la edad de una persona. Mi idea es hacer algo asi:

select nombre, apellido, fecha actual - fecha nacimiento AS edad
from personas

el problema es que no se como instanciar la fecha del sistema en la consulta, se puede hacer? sino como podria hacerlo?

gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular edad

Publicado por Isaias (3308 intervenciones) el 14/11/2007 17:36:35
Con la funcion, GETDATE() y DATEDIFF()

Solo recuerda, al final, te van a pedir, AÑOS, MESES y DIAS

select nombre, apellido, DATEDIFF(yy,GETDATE(), fecha nacimiento) AS edad
from personas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Calcular edad

Publicado por Johanna (1 intervención) el 11/09/2008 18:18:50
(((12* year(getdate()))-(12*(year(b.fecha_nacimiento))))+ (month(getdate())-month(b.fecha_nacimiento)))/12
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

RE:Calcular edad

Publicado por egarin (17 intervenciones) el 20/02/2009 18:15:17
lo que puso la colega johanna esta muy bien pero falta agregar la diferencia en dias...

select fechanac, edad, datediff(year,fechanac,getdate()) as [edad 2],
(((365* year(getdate()))-(365*(year(fechanac))))+ (month(getdate())-month(fechanac))*30
+(day(getdate()) - day(fechanac)))/365 as [edad 3]

from tablaprueba

luego esto agregarlo a una funcion y establecer el campo calculado para la misma.....

saludos y espero que les sea de utilidad...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Boris Martinez (1 intervención) el 26/05/2011 02:50:48
El Query de egarin FUNCIONA DE MARAVAILLA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por sabdra (1 intervención) el 03/05/2012 22:39:58
Excelente aportación! muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Liliana (1 intervención) el 17/01/2016 05:52:55
Muchas gracias, solo copie y pegue y me resulto.
bendiciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Juan Perez (2 intervenciones) el 20/05/2009 18:28:58
Calcular la edad no es lo mismo que restar el año actual y el año de nacimiento. Tienen que ver el mes y el día.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Fa (1 intervención) el 23/04/2008 02:48:30
yo estoy buscando la misma instruccion, pero yo quiero el dato desde una tabla y creo que se puede hacer con ayuda de una funcion con "date"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Orlando Herrera (2 intervenciones) el 08/05/2008 16:55:17
En SQL Server.

crear un campo "FechaNacimiento" y otro "Edad"
en el campo "Edad" te vas al diseño y en la opcion de "Columna Calculada" colocas la siguiente formula:

(datediff(year,[FechaNacimiento],getdate()))

donde [Fecha Nacimiento] es un campo de la tabla que guarda como su nombre dice la fecha de nacimiento.

"year" especificamos que queremos obtener la diferencia en años.
Si quieres la diferencia en dias coloca DAY

"getDate()" obtenemos la fecha actual.

Posteriormentese hace una resta internamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Alberto (1 intervención) el 24/07/2009 22:58:49
me agrada esta respuesta:(datediff(year,[FechaNacimiento],getdate()))
sin embargo esta incompleta ya que si nacio el 31 de diciembre y haces la consulta el primero de enero (al dia siguiente) el resultado es que ya tiene un año de edad siendo que no es eso lo que quieres asi que lo mas optimo es hacer la operacion en dias y dividirlo entre 365 (dias por año):
(datediff(Day,[FechaNacimiento],getdate()))/(365), Nota: si registras la hora de nacimiento haces el calculo en horas o en minutos y multiplicas el divisor por el numero de horas por dia o de minutos por dia segun la precision que requieras. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por GEYSER GEYSER-XP@hotmail.com (2 intervenciones) el 30/03/2011 02:42:16
select nombre, apellido, DATEDIFF(yy,GETDATE(), fecha nacimiento>=36) AS edad
from personas

Select Nombre,apellido,Datediff(Year,getdadte()), datediff(moth,fecha<=36)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por GEYSER HERRERA (2 intervenciones) el 30/03/2011 02:44:50
select nombre, apellido, DATEDIFF(yy,GETDATE(), fecha nacimiento) AS edad
from personas

SELECT DATEDIFF(YEAR,GETADATE()) FECHA) AS EDAD FROM EMPLEADOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por Orlando HeRRera (2 intervenciones) el 08/05/2008 16:57:07
En SQL Server.

crear un campo "FechaNacimiento" y otro "Edad"
en el campo "Edad" te vas al diseño y en la opcion de "Columna Calculada" colocas la siguiente formula:

(datediff(year,[FechaNacimiento],getdate()))

donde [Fecha Nacimiento] es un campo de la tabla que guarda como su nombre dice la fecha de nacimiento.

"year" especificamos que queremos obtener la diferencia en años.
Si quieres la diferencia en dias coloca DAY

"getDate()" obtenemos la fecha actual.

Posteriormentese se hace una resta internamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular edad

Publicado por egarin (17 intervenciones) el 20/02/2009 18:19:58
acotando lo de la colega johanna

select fechanac, datediff(year,fechanac,getdate()) as [edad 2],
(((365* year(getdate()))-(365*(year(fechanac))))+ (month(getdate())-month(fechanac))*30
+(day(getdate()) - day(fechanac)))/365 as [edad 3]

from tablaprueba

luego esto agregarlo a una funcion y establecer el campo calculado para la misma.....

edad 2 es el ejemplo de johanna..... pero lo correcto seria la edad 3.....

saludos y espero que les sea de utilidad...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad

Publicado por Moisés Huaringa (1 intervención) el 20/06/2012 16:52:18
Yo armé esta forma de conseguir la edad. Si encuentran errores me ayudarían mucho para poder actualizar mi código SQL.

UPDATE MI_TABLA
SET
MI_EDAD =
CASE
WHEN DATEPART(MM, FEC_NACIMIENTO) = DATEPART(MM, GETDATE()) AND DATEPART(DD, GETDATE()) >= DATEPART(DD, FEC_NACIMIENTO)
THEN DATEPART(YY, GETDATE()) - DATEPART(YY,FEC_NACIMIENTO)
ELSE (DATEPART(YY,GETDATE()) - 1) - (DATEPART(YY, FEC_NACIMIENTO))
END

-- Explicación:
En "WHEN" hago la consulta si el mes de nacimiento es igual al mes actual, luego verifico que el día sea igual o menor(osea dias anteriores) al día actual en curso. Si todo esto es verdadero se imprime en THEN la resta del año actual menos la fecha de nacimiento. Y el ELSE me dice que, si no se cumple nada de ello resto los años y le quito 1.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad

Publicado por Captain SQL (1 intervención) el 13/11/2012 19:48:10
Prueben esto:
SELECT Year (GETDATE() - FechaNacimiento) – 1900 AS Edad

Se restan las fechas, se extrae el año y se le resta 1900 que es el año base de las fechas de SQL Server.

Esta es análoga:
SELECT DATEPART (yy,GETDATE() - FechaNacimiento) – 1900 AS Edad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad

Publicado por garagonospina (1 intervención) el 04/12/2013 04:44:14
RESUELTO:
Disculpen hasta ahora necesite la función y acá les queda

Los siguientes 3 queries retornan los años, los meses y los dias cumplidos en orden

Como dato interesante los días pueden dar negativos indicando los días que faltan para el cumpleaños

DATEDIFF(YEAR,fecha_nacimiento,getdate()) "edadyy",
DATEDIFF(MONTH,fecha_nacimiento,getdate())%12 "edadmm",
DATEPART(DAY, getdate()) - DATEPART(DAY, fecha_nacimiento) "edaddd",
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Calcular edad

Publicado por Jhonatan Estrada (1 intervención) el 20/01/2015 23:52:21
SELECT NOMBRE, APELLIDOS, F_NACIMIENTO, truncate( datediff(current_date,f_nacimiento) / 365 , 0) AS EDAD
from PERSONAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular edad

Publicado por Dani (1 intervención) el 30/11/2015 12:16:10
La manera mas correcta para tener en cuenta los años bisiestos es:

select (DATEDIFF(MONTH, <fecha nacimiento>, <fecha actual>)\12) +
case when month(<fecha nacimiento>) = month(<fecha actual>) then
case when day(<fecha nacimiento>) < day(<fecha actual>) then -1 else 0 end
else 0 end

Se que se puede mejorar para hacerla mas eficiente, quitando los "case", pero así se entiende muy bien el algoritmo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar