Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Función SQL para transformar segundos en horas,minutos y segundos

Estas en el tema de Función SQL para transformar segundos en horas,minutos y segundos en el foro de SQL Server en Foros del Web. Buenas quería comenzar con este aporte con los que pienso hacer en el transcurso de las próximas conexiones ,para así devolver de algún modo lo ...
  #1 (permalink)  
Antiguo 25/04/2012, 06:06
 
Fecha de Ingreso: septiembre-2008
Mensajes: 31
Antigüedad: 15 años, 7 meses
Puntos: 1
Función SQL para transformar segundos en horas,minutos y segundos

Buenas quería comenzar con este aporte con los que pienso hacer en el transcurso de las próximas conexiones ,para así devolver de algún modo lo que Internet me ha dado. Muchas Gracias y un Saludo.

Código:
--Función para pasar segundos a (horas,minutos y segundos en 2 formatos)
CREATE FUNCTION myfn_sla_get_format_HMS
(
	@segundos INT,
	@type varchar(max)	-- Forma en la que se va a transformar
)						-- 1: Formato String x horas x minutos x segundos
						-- 2: Formato Number HH:MM:SS
RETURNS VARCHAR(MAX)
AS 
BEGIN
	DECLARE @temp VARCHAR(100)
	DECLARE @horas INT
	DECLARE @minutos INT
	DECLARE @tempMINUTOS INT

	SET @temp ='...'

	IF (@segundos < 3600) BEGIN
	
		SET @minutos = @minutos / 60
		SET @segundos = @minutos % 60
			--Según el tipo recibido lo formateo de una forma u otra
			IF @type = 1
				SET @temp = '0 Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
			ELSE			
				SET @temp = '00:' + CONVERT(VARCHAR, @minutos) + ':' + 	CONVERT(VARCHAR, @segundos)
	END ELSE 
BEGIN 
	SET @horas = @segundos / 3600
	SET @tempMINUTOS = @segundos % 3600
	SET @minutos = @tempMINUTOS / 60 --MINUTOS FINALES
	SET @segundos = @tempMINUTOS % 60
		--Según el tipo recibido lo formateo de una forma u otra
		IF @type = 1
			SET @temp = CONVERT(VARCHAR, @horas) + ' Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
		ELSE			
			SET @temp = CONVERT(VARCHAR, @horas) + ':' + CONVERT(VARCHAR, @minutos) + ':' + CONVERT(VARCHAR, @segundos)	
END 
	RETURN @temp
END


--Llamada a la función
DECLARE @format varchar(255)
SET @format = (SELECT dbo.myfn_sla_get_format_HMS(8500,1))
PRINT @format
  #2 (permalink)  
Antiguo 25/04/2012, 10:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 31
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Función SQL para transformar segundos en horas,minutos y segundos

Adjunto modificacion

Código SQL:
Ver original
  1. CREATE FUNCTION myfn_sla_get_format_HMS
  2. (
  3.     @segundos INT,
  4.     @TYPE VARCHAR(MAX)  -- Forma en la que se va a transformar
  5. )                       -- 1: Formato String x horas x minutos x segundos
  6.                         -- 2: Formato Number HH:MM:SS
  7. --Llamada a la función
  8. --DECLARE @format varchar(255)
  9. --SET @format = (SELECT dbo.myfn_sla_get_format_HMS(8500,1))
  10. --PRINT @format
  11. RETURNS VARCHAR(MAX)
  12. AS
  13. BEGIN
  14.     DECLARE @temp VARCHAR(100)
  15.     DECLARE @horas INT
  16.     DECLARE @minutos INT
  17.     DECLARE @tempMINUTOS INT
  18.  
  19.     SET @temp ='...'
  20.  
  21.     IF (@segundos < 3600) BEGIN
  22.    
  23.         SET @minutos =  FLOOR(@minutos / 60)
  24.         SET @segundos = @minutos % 60
  25.             --Según el tipo recibido lo formateo de una forma u otra
  26.             IF @TYPE = 1
  27.                 SET @temp = '0 Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  28.             ELSE           
  29.                 SET @temp = '00:' + CONVERT(VARCHAR, @minutos) + ':' +  CONVERT(VARCHAR, @segundos)
  30.     END ELSE
  31. BEGIN
  32.     SET @horas = FLOOR(@segundos / 3600)
  33.     SET @tempMINUTOS = @segundos % 3600
  34.     SET @minutos = FLOOR(@tempMINUTOS / 60) --MINUTOS FINALES
  35.     SET @segundos = @tempMINUTOS % 60
  36.         --Según el tipo recibido lo formateo de una forma u otra
  37.         IF @TYPE = 1
  38.             SET @temp = CONVERT(VARCHAR, @horas) + ' Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  39.         ELSE           
  40.             SET @temp = CONVERT(VARCHAR, @horas) + ':' + CONVERT(VARCHAR, @minutos) + ':' + CONVERT(VARCHAR, @segundos)
  41. END
  42.     RETURN @temp
  43. END

Última edición por yanker; 25/04/2012 a las 10:39 Razón: correcion
  #3 (permalink)  
Antiguo 13/09/2012, 06:59
 
Fecha de Ingreso: julio-2010
Mensajes: 26
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Función SQL para transformar segundos en horas,minutos y segundos

Muchas gracias. Si le paso menos de 3600 me devuelve null

Etiquetas: funcion, horas, minutos, segundos, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:52.