SQL - necesito en SQL calcular la edad en años,mes,dias

 
Vista:

necesito en SQL calcular la edad en años,mes,dias

Publicado por Eliécer (4 intervenciones) el 02/12/2004 16:32:19
hola, necesito saber como se puede hacer en SQL para calcular la edad en años,meses y dias por separado y no puedo hacerlo
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Alex (15 intervenciones) el 02/12/2004 17:53:43
select datediff(day, fecha_nacimiento, getdate()) as "dias", datediff(month, fecha_nacimiento, getdate()) as "meses", datediff(year, fecha_nacimiento, getdate()) as "años" from TuTabla

Esto debería entregarte la cantidad de días, meses y años de edad... hasta la fecha (getdate()) de hoy (del sistema). Eso era lo que pretendías obtener cierto?
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Eliecer (4 intervenciones) el 02/12/2004 21:07:56
Gracias Alex, pero lo que quiero es que me de el resultado exacto ejemplo: si yo naci el 01/01/1980 y la fecha de hoy es 02/12/2004
el resultado sería:
24 años,11 Meses y 1 Día

Gracias de antemano.
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Alex (15 intervenciones) el 03/12/2004 17:19:50
Hola;
...y esto?... en realidad devuelve todo en relación a la cantidad de días de diferencia entre la fecha de nacimiento y el día del GetDate()

1
select floor((((cast(datediff(day, fecha_nacimiento, getdate()) as float)/365-(floor(cast(datediff(day, fecha_nacimiento, getdate()) as float)/365)))*12)-floor((cast(datediff(day, fecha_nacimiento, getdate()) as float)/365-(floor(cast(datediff(day, fecha_nacimiento, getdate()) as float)/365)))*12))*(365/12)) AS "dias", floor((cast(datediff(day, fecha_nacimiento, getdate()) as float)/365-(floor(cast(datediff(day, fecha_nacimiento, getdate()) as float)/365)))*12) AS "meses", floor(cast(datediff(day, fecha_nacimiento, getdate()) as float)/365) AS "años"  from TuTabla

PD: alguien sabe cómo calcular el MOD y el DIV de un número en SQL SErver... eso hubiese sido más util en este caso.

Saludos
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Adrián Salas (3 intervenciones) el 31/05/2011 21:02:20
Muchisimas gracias por el post eh,
me sirvio de maravilla despues de tanto buscar.
hasta para calcular tiempo de antigûedad.

Excellente post 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:necesito en SQL calcular la edad en años,mes,di

Publicado por Eliecer (4 intervenciones) el 07/12/2004 16:54:15
Gracais Alex, este me sirve
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Nicolas (1 intervención) el 29/07/2005 19:12:46
muy linda, lastima que no funciona , no calcula bien la 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

RE:necesito en SQL calcular la edad en años,mes,di

Publicado por Adrian (3 intervenciones) el 01/06/2011 22:42:22
SELECT FLOOR(((CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365 - FLOOR(CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365))
* 12 - FLOOR((CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365 - FLOOR(CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365))
* 12)) * (365 / 12)) AS dias, FLOOR((CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365 - FLOOR(CAST(DATEDIFF(day, f_nacimiento,
GETDATE()) AS float) / 365)) * 12) AS meses, FLOOR(CAST(DATEDIFF(day, f_nacimiento, GETDATE()) AS float) / 365) AS años
FROM tu tabla


Espero que éste ejemplo tambien les sirva...
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:necesito en SQL calcular la edad en años,mes,di

Publicado por Adrian (3 intervenciones) el 01/06/2011 22:44:45
Días Meses Años F_nac
22 10 43 20/07/1967
6 6 37 03/12/1973
4 8 28 03/10/1982
6 10 41 04/08/1969
ëste fue mi resultado
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:necesito en SQL calcular la edad en años,mes,di

Publicado por eduardo (1 intervención) el 10/08/2018 20:45:57
CUIDADO ESTE CALCULO NO ES CORRECTO
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:necesito en SQL calcular la edad en años,mes,di

Publicado por CARLOS ALVAREZ (1 intervención) el 22/08/2019 20:49:43
Estuvo perfecto... 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:necesito en SQL calcular la edad en años,mes,di

Publicado por Juan Curiel (1 intervención) el 03/06/2021 19:23:59
1
2
3
4
5
select floor((((cast(datediff(day, '28-03-1979', getdate()) as float)/365.25-(floor(cast(datediff(day, '28-03-1979',
getdate()) as float)/365.25)))*12)-floor((cast(datediff(day, '28-03-1979', getdate()) as float)/365.25-
(floor(cast(datediff(day, '28-03-1979', getdate()) as float)/365.25)))*12))*(365.35/12)) AS "dias",
floor((cast(datediff(day, '28-03-1979', getdate()) as float)/365-(floor(cast(datediff(day, '28-03-1979', getdate()) as float)/365)))*12) AS "meses",
floor(cast(datediff(day, '28-03-1979', getdate()) as float)/365) AS "años" from tutabla

la consulta esta bien pero para que salga mas exacto a los 365 le colocas estos decimales .25
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

necesito en SQL calcular la edad en años,mes,dias

Publicado por garagonospina (4 intervenciones) el 04/12/2013 04:39:25
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
2
Comentar

necesito en SQL calcular la edad en años,mes,dias

Publicado por JosCar (1 intervención) el 19/12/2013 17:20:38
Gracias por compartir esta solución, es sencilla pero muy exacto.
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

necesito en SQL calcular la edad en años,mes,dias

Publicado por yoyo (1 intervención) el 14/05/2014 20:34:31
no sirve tu solución, no es exacto
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
sin imagen de perfil
Val: 3
Ha aumentado su posición en 22 puestos en SQL (en relación al último mes)
Gráfica de SQL

necesito en SQL calcular la edad en años,mes,dias

Publicado por carlos (1 intervención) el 23/02/2019 21:46:26
Hola gracias por por tu aporte, amigo tengo una inquietud necesito calcular la edad con una fecha especifica no con la fecha actual como lo puedo hacer.
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
sin imagen de perfil

necesito en SQL calcular la edad en años,mes,dias

Publicado por Ricardo (1 intervención) el 22/03/2016 16:38:07
Hola, lo siguiente me funcionó mejor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DECLARE @FECHAI DATETIME = '19700301'
DECLARE @FECHAF DATETIME = '20160301'
DECLARE @FECHAREF DATETIME
declare @nMeses int
declare @nDias int
 
 
SET @FECHAREF = DATEFROMPARTS(YEAR(@FECHAF),MONTH(@FECHAF), DAY(@FECHAI))
SET @FECHAREF = DATEADD(DAY,-1,@FECHAREF)
 
IF @FECHAREF > @FECHAF
    SET @FECHAREF = DATEADD(MONTH,-1,@FECHAREF)
 
SET @nMeses = DATEDIFF(MONTH,@FECHAI, @FECHAREF)
 
IF @FECHAREF = EOMONTH(@FECHAREF)
    SET @nMeses = @nMeses + 1
 
SET @nDias = DATEDIFF(DAY,@FECHAREF, @FECHAF)
 
select 'Años'= @nMeses/12, 'Meses'= @nMeses % 12, 'Días' = @nDias
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

necesito en SQL calcular la edad en años,mes,dias

Publicado por Orlando Loaiza (1 intervención) el 21/05/2016 22:24:43
Tampoco es exacta
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

necesito en SQL calcular la edad en años,mes,dias

Publicado por Carlos Colorado (1 intervención) el 26/05/2021 19:26:42
La formula correcta, es en la que usarn FLOOR, hay que analizar un poco y la división no sería entre 365, sino entre 365.25:

1
2
3
4
5
Select 	,FLOOR(((CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25- FLOOR(CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25))
* 12 - FLOOR((CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25 - FLOOR(CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25))
* 12)) * (365.25 / 12)) AS dias, FLOOR((CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25 - FLOOR(CAST(DATEDIFF(day, b.fecha_nac,
GETDATE()) AS float) / 365.25)) * 12) AS meses, FLOOR(CAST(DATEDIFF(day, b.fecha_nac, GETDATE()) AS float) / 365.25) AS años
From tbad_clientes b
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

necesito en SQL calcular la edad en años,mes,dias

Publicado por Isaias (1919 intervenciones) el 26/08/2019 22:27:14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Declare @dateofbirth datetime
Declare @currentdatetime datetime
Declare @years varchar (40)
Declare @months varchar (30)
Declare @days varchar (30)
set @dateofbirth='1960-04-07'--birthdate
set @currentdatetime =getdate()--current datetime
select @years=datediff(year,@dateofbirth,@currentdatetime)-- To find Years
select @months=datediff(month,@dateofbirth,@currentdatetime)-(datediff(year,@dateofbirth,@currentdatetime)*12)
-- To Find Months
select @days=datepart(d,@currentdatetime)-datepart(d,@dateofbirth)-- To Find Days
select @years  +' years,   ' +@months +' months,   '+@days   +' days' asYearMonthDay
 
-- Create for  Rohatash Kumar
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