Calculo de años - datediff

04/05/2006 - 22:56 por mayowr | Informe spam
Buenas Tardes:

Tengo un problema con el cálculo de unos años, estoy utilizando
DATEDIFF para encontrar los años, pero me devuelve un valor entero y
requiero que me lo devuelva con decimales o truncado.

Si tengo como f_nace: 31/12/1965, en año me deberia dar 40.48 o por
lo menos truncar a 40, pero me está arrojando 41

SELECT EMP.EMPLE,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+ RTRIM(EMP.NOMBRE),1,35) AS
NOMEMP,
EMP.F_NACE,
DATEDIFF(year, F_NACE, GETDATE()) AS AÑO
FROM EMP

Muchas Gracias,

Preguntas similare

Leer las respuestas

#1 Morena González
04/05/2006 - 23:42 | Informe spam
Lo que sucede es que le pones que te calcule la diferencia para el año, si
buscas en los BOL encontrarás que al ponerle que YEAR te devuelve la
cantidad de años transcurridos entre los años que están en las fechas
inicial y final. Probá poniéndole MONTH y luego dividiendo el resultado
entre 12.

wrote in message
news:
Buenas Tardes:

Tengo un problema con el cálculo de unos años, estoy utilizando
DATEDIFF para encontrar los años, pero me devuelve un valor entero y
requiero que me lo devuelva con decimales o truncado.

Si tengo como f_nace: 31/12/1965, en año me deberia dar 40.48 o por
lo menos truncar a 40, pero me está arrojando 41

SELECT EMP.EMPLE,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+ RTRIM(EMP.NOMBRE),1,35) AS
NOMEMP,
EMP.F_NACE,
DATEDIFF(year, F_NACE, GETDATE()) AS AÑO
FROM EMP

Muchas Gracias,
Respuesta Responder a este mensaje
#2 David Austria
05/05/2006 - 00:07 | Informe spam
Intenta usar una función de SQL:

CREATE FUNCTION [dbo].[ufn_GetAge] ( @DateOfBirth DATETIME,
@AsOfDate DATETIME )
RETURNS INT
AS
BEGIN

DECLARE @vAge INT

IF @DateOfBirth >= @AsOfDate
RETURN 0

SET @vAge = DATEDIFF(YY, @DateOfBirth, @AsOfDate)

IF MONTH(@DateOfBirth) > MONTH(@AsOfDate) OR
(MONTH(@DateOfBirth) = MONTH(@AsOfDate) AND
DAY(@DateOfBirth) > DAY(@AsOfDate))
SET @vAge = @vAge - 1

RETURN @vAge
END

Despues en tu consulta:

SELECT dbo.ufn_GetAge(FechaNacimiento,GetDate()) as Edad FROM Empleados

La función Regresa la edad exacta puedes modificar la función.

Saludos
David Austria
Respuesta Responder a este mensaje
#3 mayowr
05/05/2006 - 01:00 | Informe spam
Muchas gracias Morena y David por responder.

David te cuento que la función que me enviaste y la consulta
estuvieron perfectas, me dió el resultado que esperaba.
Nuevamente gracias,

Saludos,
Mayo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida