Usuário com melhor resposta
Calcular tempo de execução entre duas linhas

Pergunta
-
Pessoal, boa noite,
Estou tentando resolver um problema e gostaria que alguém me ajudasse.
Tenho a seguinte tabela:
Codigo Nome Data Inicio Data Fim 1 Teste_01 21-03-2012 12:50:01.000 21-03-2012 12:50:01.000 2 Teste_01 21-03-2012 12:50:11.000 21-03-2012 12:50:11.000 3 Teste_02 21-03-2012 13:00:12.000 21-03-2012 13:00:12.000 4 Teste_02 21-03-2012 13:00:28.000 21-03-2012 13:00:28.000 Tenho a data de inicio da execução em uma linha e o final da execução do Teste_01 em outra, o mesmo acontece com o Teste_02.
Tenho que fazer um query que calcule o tempo entre o inicio e o fim da execução, mas não estou conseguindo porque estão em linhas diferentes.
Alguém sabe como resolvo este problema?
Obrigado a todos,
SeuBell
Respostas
-
Para fazer da forma com que vocë quer, uma das datas terá que ser a sua data base. Eu escolhi fazer pela DataInicio. Veja se o código abaixo te atende:
SELECT Nome, CONVERT(DATE, DataInicio) DATA, MIN(DataInicio), MAX(DataFim), (MAX(DataFim) - MIN(DataInicio)) AS Diferenca, DATEDIFF(ss, MIN(DataInicio), MAX(DataFim)) AS DIFF FROM teste GROUP BY nome, CONVERT(DATE, DataInicio)
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
- Marcado como Resposta SeuBell quarta-feira, 4 de abril de 2012 16:02
Todas as Respostas
-
SeuBell,
Segue um exemplo utilizando a função DATEDIFF (que eu gosto mais, mas o resultado será sempre em segundos, neste caso) e um exemplo simplesmente subtraindo a data final da data inicial.
SELECT Nome, MIN(DataInicio), MAX(DataFim), (MAX(DataFim) - MIN(DataInicio)) AS Diferenca, DATEDIFF(ss, MIN(DataInicio), MAX(DataFim)) AS DIFF FROM Tabela GROUP BY nome
Espero ter ajudado.Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
-
Roberto, bom dia e obrigado.
Fiz o teste com a query que você fez como exemplo, mas não deu certo, ela está pegando, por exemplo: o Teste_01 e calcula o tempo de execução entre a menor data e a maior data, o problema é que o Teste_01 tem na minha tabela varias vezes em datas diferentes. Preciso calcular por dia, por exemplo, no dia 21-03 o Teste_01 rodou em 10 segundos.
Será que você pode me ajudar?
Obrigado
-
Para fazer da forma com que vocë quer, uma das datas terá que ser a sua data base. Eu escolhi fazer pela DataInicio. Veja se o código abaixo te atende:
SELECT Nome, CONVERT(DATE, DataInicio) DATA, MIN(DataInicio), MAX(DataFim), (MAX(DataFim) - MIN(DataInicio)) AS Diferenca, DATEDIFF(ss, MIN(DataInicio), MAX(DataFim)) AS DIFF FROM teste GROUP BY nome, CONVERT(DATE, DataInicio)
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
- Marcado como Resposta SeuBell quarta-feira, 4 de abril de 2012 16:02
-