2011-10-17 6 views
8

Tengo una consulta de tal manera que el resultado de la consulta es:¿Cómo puedo obtener la suma de múltiples valores de fecha y hora?

SELECT CONVERT(VARCHAR(8),(MAX(END_TIME)-MIN(START_TIME)),108) as DURATION WHERE ... GROUP BY TITLE 

Para cada título, DURATION es diferente. La consulta devuelve:

DURATION 
00:16:14 
00:00:00 
00:01:30 
00:16:25 
00:09:34 
00:00:01 
01:04:04 
00:00:28 
00:00:12 
00:06:11 
00:26:38 
00:31:44 
00:02:16 
00:03:22 
00:09:39 
00:03:20 
00:03:43 
00:09:33 
00:08:05 
00:06:58 
00:25:29 
01:55:30 
00:03:02 
00:00:18 
00:06:09 
00:07:26 
00:25:43 
00:00:16 
00:26:58 
02:09:38 
00:57:56 
00:00:45 
00:00:00 
00:07:24 
00:00:54 
00:00:27 
00:01:28 
00:07:14 
00:00:19 
01:43:25 
00:58:23 
00:02:29 
02:19:48 
00:09:06 
05:12:15 
02:27:15 
00:56:47 
00:02:24 

Necesito la suma de estos valores; ¿Cómo puedo obtenerlo?

Respuesta

14

minutos Convierte

SUM() los segundos

convertir de nuevo a minutos


La siguiente información le dará la suma de segundos:

SET @Seconds = SELECT SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME])) 

El entonces siguiendo lo convierte en un datetime objeto:

select convert(varchar(8), dateadd(second, @Seconds, 0), 108) 

O como 1 consulta:

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, [START_TIME], [END_TIME])), 0), 108) 
1

No puede sumar tiempos. Lo que debe hacer en su lugar es usar la función DateDiff con su hora de inicio y finalización usando el parámetro de segundos. Esto devolverá un tipo de datos enteros sobre el que puede SUMAR. Cuando termine, conviértalo a DateTime para formatearlo como horas: minutos: segundos. en segundo

Cuestiones relacionadas