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

conversion segundos a horas

Estas en el tema de conversion segundos a horas en el foro de SQL Server en Foros del Web. Hola tod@s. Utilizo esta funcion para convertir un tiempo en segundos y pasarlo a formato hh:mm:ss. todo funciona correctamente hasta que si el numero convertido ...
  #1 (permalink)  
Antiguo 22/02/2010, 05:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
conversion segundos a horas

Hola tod@s.
Utilizo esta funcion para convertir un tiempo en segundos y pasarlo a formato hh:mm:ss. todo funciona correctamente hasta que si el numero convertido es de un solo digito no me pone un 0 a la izquierda. por ejemplo.
me muestra esto. 1:9:20 cuando en realidad debería ser. 01:09:20

Muchas gracias por anticipado


CONVERT (nchar,tabla.TiempoSegundos / 3600) + N':' + CONVERT (nchar, tabla.TiempoSegundos/ 60 - 60 * (tabla.TiempoSegundos / 3600)) + N':' + CONVERT (nchar, tabla.TiempoSegundos - tabla.TiempoSegundos / 60 * 60)
  #2 (permalink)  
Antiguo 22/02/2010, 11:11
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: conversion segundos a horas

Lo que ocupas es aplicarle una funcion tipo LPAD, que te rellene a la izquierda con los caracteres y la cantidad que ud le indique

Código:
CREATE FUNCTION [dbo].[LPAD](@Hilera AS varchar(255), @LongitudFinal as numeric(5), @CaracterRelleno as varchar(1))
RETURNS varchar(255) with schemabinding

BEGIN  
   Declare @Valor varchar(255)
   IF IsNull(@CaracterRelleno, '') = '' 
      SELECT @CaracterRelleno = ' '

   /* Si la longitud final es igual que la longitud de la hilera, devolver la hilera */  
   IF LEN(@Hilera) = @LongitudFinal  
      SELECT @Valor = @Hilera  
   ELSE     
      /* Si la logitud de la hilera es menor que la longitud final, rellenar con el caracter de relleno */  
      IF LEN(@Hilera) < @LongitudFinal  
         SELECT @Valor = Right(Replicate(@CaracterRelleno, @LongitudFinal) + @Hilera, @LongitudFinal)  
      ELSE  
         /* Si la longitud de la hilera es mayor que la longitud final, truncar la hilera */  
         SELECT @Valor = Left(@Hilera, @LongitudFinal)
   RETURN @Valor  
END
por ejemplo para ejecutarlo seria select dbo.LPAD('2',3,'0') eso te retorna 002
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 22/02/2010, 11:58
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: conversion segundos a horas

Otra alternativa...

Código:
DECLARE @NumeroSegundos int

SET @NumeroSegundos = 130

SELECT CONVERT(VARCHAR, dateadd(ss, @NumeroSegundos, '19000101'), 108)

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #4 (permalink)  
Antiguo 04/08/2011, 09:26
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: conversion segundos a horas

Cita:
Iniciado por Andres95 Ver Mensaje
Otra alternativa...

Código:
DECLARE @NumeroSegundos int

SET @NumeroSegundos = 130

SELECT CONVERT(VARCHAR, dateadd(ss, @NumeroSegundos, '19000101'), 108)

Saludos!
Muchas gracias! Perfecta la función.
Saludos.

Etiquetas: conversion, horas, segundos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:41.