SQL Server: Cómo Sumar el tipo de dato TIME, How to SUM Data Type TIME using TSQL
Que tal,
El tipo de dato TIME, nuevo desde la versión SQL Server 2008, nos permite almacenar tiempo en nuestra base de datos, por ejemplo horas, anteriormente para hacerlo se debía crear un tipo de dato CHAR(8), pero con este tipo de dato cambia mucho las cosas, pero que sucede si estamos usando este tipo de dato (TIME) y de repente deseamos obtener el tiempo total acumulado, por ejemplo:
DECLARE @TablaTiempo TABLE ( IDLocacion int, IDMedidor int, TiempoProceso time(7) ); --Ingresamos registros INSERT INTO @TablaTiempo(IDLocacion, IDMedidor, TiempoProceso) VALUES (1, 50, '08:05:30'), (1, 85, '00:05:05'), (2, 36, '01:01:55'), (2, 26, '00:00:06'), (3, 89, '00:05:15'); --Deseamos saber el tiempo de operación por IDLocacion SELECT t.IDLocacion, SUM(t.TiempoProceso) AS TotalTiempoProceso FROM @TablaTiempo t GROUP BY IDLocacion;
--Descripción del Error
--El tipo de datos time del operando no es válido para el operador sum.
--Operand data type time is invalid for sum operator.
Entonces, para poder corregirlo y darle solución debemos de realizar lo siguiente:
SELECT t.IDLocacion, CAST(DATEADD( ms, SUM(DATEDIFF(ms, '00:00:00.000', t.TiempoProceso)), '00:00:00.000') AS time(7)) AS TotalTiempoProceso FROM @TablaTiempo t GROUP BY IDLocacion;
--Obtenemos los siguientes resultados
--IDLocacion TotalTiempoProceso
--1 08:10:35.0000000
--2 01:02:01.0000000
--3 00:05:15.0000000
Disfruten!
Saludos!
1 comentarios:
Hola Hebert, buscando una solución para un caso similar, pero yo requiero hacer sumar columnas y no filas, me podrías ayudar
Publicar un comentario