fn_lapso_acontecido

01/07/2003 - 05:11 por Mauricio Sthandier R. | Informe spam
Creé esta función para tomar el lapso entre una fecha de inicio y una de
término...
me gustaría recibir aportes sobre ella, si se puede hacer de otra forma más
precisa o presenta fallas este acercamiento...
me preocupa la pérdida de 1/300 que entrega el tipo de datos datetime y la
ganancia de un día por año bisiesto...
creo que éste no es el lapso REAL de tiempo.

CREATE FUNCTION fn_lapso_acontecido(@fecha_inicial datetime, @fecha_final
datetime)
RETURNS varchar(255)
AS
BEGIN
DECLARE @diferencial float
DECLARE @fecha_intervalo datetime

SET @diferencial = CAST(@fecha_final AS float) - CAST(@fecha_inicial AS
float)
SET @fecha_intervalo = CAST(@diferencial AS datetime)

RETURN 'Han pasado ' + CAST(Year(@fecha_intervalo) - 1900 AS char(4)) + '
años, ' + CAST(Month(@fecha_intervalo) - 1 AS char(2)) + ' meses y ' +
CAST(Day(@fecha_intervalo) -1 AS char(2)) + ' días con ' +
CAST(DATEPART(Hour, @fecha_intervalo) AS char(2)) + ' Horas, ' +
CAST(DATEPART(Minute, @fecha_intervalo) AS char(2)) + ' Minutos y ' + +
CAST(DATEPART(Second, @fecha_intervalo) AS char(2)) + ' Segundos.'
END

gracias !
 

Leer las respuestas

#1 Carlos Sacristan
01/07/2003 - 08:10 | Informe spam
¿No te vale DATEDIFF ( datepart , startdate , enddate ) ?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Mauricio Sthandier R." <mauricio@@sthandier.net> escribió en el mensaje
news:#
Creé esta función para tomar el lapso entre una fecha de inicio y una de
término...
me gustaría recibir aportes sobre ella, si se puede hacer de otra forma


más
precisa o presenta fallas este acercamiento...
me preocupa la pérdida de 1/300 que entrega el tipo de datos datetime y la
ganancia de un día por año bisiesto...
creo que éste no es el lapso REAL de tiempo.

CREATE FUNCTION fn_lapso_acontecido(@fecha_inicial datetime, @fecha_final
datetime)
RETURNS varchar(255)
AS
BEGIN
DECLARE @diferencial float
DECLARE @fecha_intervalo datetime

SET @diferencial = CAST(@fecha_final AS float) - CAST(@fecha_inicial AS
float)
SET @fecha_intervalo = CAST(@diferencial AS datetime)

RETURN 'Han pasado ' + CAST(Year(@fecha_intervalo) - 1900 AS char(4)) + '
años, ' + CAST(Month(@fecha_intervalo) - 1 AS char(2)) + ' meses y ' +
CAST(Day(@fecha_intervalo) -1 AS char(2)) + ' días con ' +
CAST(DATEPART(Hour, @fecha_intervalo) AS char(2)) + ' Horas, ' +
CAST(DATEPART(Minute, @fecha_intervalo) AS char(2)) + ' Minutos y ' + +
CAST(DATEPART(Second, @fecha_intervalo) AS char(2)) + ' Segundos.'
END

gracias !


Preguntas similares