Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/08/2011, 08:46
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Campo smallint en hora

Hola mksp:

Si entendí bien en tu tabla tienes datos como estos:

20 -> 00:20
130 -> 01:30
2205 -> 22:05

es decir, cada entero corresponde a una hora y lo que necesitas es sumar los campos, de tal manera que el resultado anterior sea 23:55 correcto???

El algoritmo que se me ocurre sería el siguiente:

1°. convertir tu número a varchar, rellenando con ceros a la izquierda para dejarlo de cuatro posiciones:

20 -> 0020
130 -> 0130
2205 -> 2205

SQL Server no tienen una función específica para hacer esto, pero podrías hacerlo así:

Código SQL:
Ver original
  1. DECLARE @campo1 SMALLINT;
  2. SET @campo1 = 30
  3. SELECT RIGHT('0000' + CAST(@campo1 AS VARCHAR(4)), 4)

Ahora bien, ya con el campo varchar a 4 posiciones podrías convertirlo a tipo fecha:

Código SQL:
Ver original
  1. DECLARE @campo1 VARCHAR(4);
  2. SET @campo1 = '0030'
  3. SELECT CONVERT(datetime, LEFT(@campo1, 2) + ':' + RIGHT(@campo1,2), 108)

Finalmente, ya con los tres campos tipo datetime puedes sumarlos y recuperar la hora, con la función convert para obtener sólo la hora:

Código SQL:
Ver original
  1. DECLARE @campo1 datetime;
  2. SET @campo1 = getdate()
  3. SELECT CONVERT(VARCHAR, @campo1, 108)

Igual y sería conveniente que programes esto en una función Smallint_a_Datetime, para poder aplicarlo en los tres campos.

Dale un vistazo a los códigos que te puse, intenta crear tu función y si tienes problemas lo comentas en el foro para ayudarte a finar los detalles que puedas tener.

Saludos
Leo.