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

Operar con varchar tratandolos como horas y minutos

Estas en el tema de Operar con varchar tratandolos como horas y minutos en el foro de SQL Server en Foros del Web. Hola a todos, mi problema es el siguiente: tengo estos datos: 00:00:25 00:01:00 02:00:10 estan recogidos en una columna como varchar. He intentado hacer un ...
  #1 (permalink)  
Antiguo 22/06/2011, 04:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 17
Antigüedad: 15 años, 2 meses
Puntos: 0
Operar con varchar tratandolos como horas y minutos

Hola a todos,

mi problema es el siguiente:

tengo estos datos:

00:00:25
00:01:00
02:00:10

estan recogidos en una columna como varchar.

He intentado hacer un cast para convertir estos datos en horas, minutos y segundos para sumarlos pero el SQL no me deja. He probado a pasarlos a Float y a int pero en ambos casos el resultado es terrible.

Alguien sabe como conseguir a través de SQL obtener estos datos de la columna tiempo y hacerles un cast para que el final de la Select sea:

02:01:35

muchas gracias de antemano.
  #2 (permalink)  
Antiguo 22/06/2011, 08:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Operar con varchar tratandolos como horas y minutos

Código SQL:
Ver original
  1. SELECT CONVERT(VARCHAR(8),tiempo,108) FROM
  2. (
  3. SELECT CONVERT(datetime,'00:00:25') + CONVERT(datetime,'00:01:00') + CONVERT(datetime,'02:00:10') AS tiempo
  4. ) t1
  5.  
  6. Resultado
  7. 02:01:35

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 22/06/2011, 08:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Operar con varchar tratandolos como horas y minutos

Hola dajomaj:

Ya el compañero Libras te dio un ejemplo de cómo podrías hacerlo, pero me imagino que en tu tabla no sólo tienes tres datos, por lo tanto es posible que la solución de Libras no la puedas implementar.

Podrías hacer algo más genérico utilizando una variable para acumular las horas, de la siguiente manera:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (hora VARCHAR(10))
  2. INSERT INTO @Tabla VALUES ('00:00:25')
  3. INSERT INTO @Tabla VALUES ('00:01:00')
  4. INSERT INTO @Tabla VALUES ('02:00:10')
  5. DECLARE @campo datetime;
  6. SET @campo = '1900-01-01 00:00:00.000'
  7. SELECT @campo = @campo + CONVERT(datetime, hora, 108) FROM @Tabla
  8. SELECT CONVERT(VARCHAR, @campo, 108)

Básicamente es la misma idea que la de Libras, pero ya no importaría el número de registros que tenga tu tabla.

Saludos
Leo.

Etiquetas: horas, minutos, varchar
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 15:38.