Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rootzig

Somar diferença entra várias datas e horas

Recommended Posts

Olá,

Gostaria de uma ajuda se é possível fazer isso direto no mysql.

Tenho um campo na minha tabela que grava a data e hora.

Exemplo:

2017-01-24 14:12:37
2017-01-24 14:12:30
2017-01-24 14:12:15
2017-01-24 14:11:47
2017-01-24 14:11:19
2017-01-24 14:10:50
2017-01-24 14:10:25
2017-01-24 14:10:23
2017-01-24 14:10:19

Quero pegar a diferença entre cada data e ir somando.

Será que alguém pode me ajudar?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta tabela tem chave primária ?

SELECT T2.DATA - T1.DATA
FROM TABELA T1,TABELA T2
WHERE T1.CHAVE = T2.CHAVE-1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma vez aqui! Estou com um dúvida!

Os valores estão OK, mais quero pegar de um único cliente. Do jeito que tentei ele não traz todos os valores.

Eu preciso pegar somente o resultado do cliente de código 20 da coluna src. Essa consulta só está retornando uma linha. Dessa data tem mais de 30 registros.

SELECT 
	T1.src,
	T1.id, 
	T1.data, 
	T2.src,
	T2.id, 
	T2.data, 
	SEC_TO_TIME( ( ABS( UNIX_TIMESTAMP( T2.data ) - UNIX_TIMESTAMP( T1.data ) ) ) ) AS tempo_total,
	SEC_TO_TIME(T1.duracao) as t1,SEC_TO_TIME(T2.duracao) as t2
FROM tabela T1, tabela T2
WHERE T1.id = ( T2.id -1 ) AND T1.src = '20' AND T2.src  = '20'
AND DATE( T1.data ) =  '2017-01-25' AND DATE( T2.data ) =  '2017-01-25'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Motta,

É o mesmo campo onde está fazendo a diferença entre as datas. Queria usar esse mesmo campo pra filtrar a somente os dados de Hoje por exemplo.

A minha tabela esta mais ou menos assim pra você entender. Preciso fazer a media como já está pegando somente a data de hoje por exemplo com o codigo do cliente 20.

id   |  src  |data
1    |  20   |2017-01-25 14:03:12
2    |  20   |2017-01-25 14:01:40
3    |  20   |2017-01-25 14:01:18
4    |  21   |2017-01-25 13:59:43
5    |  21   |2017-01-25 13:59:12   

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, se você quiser comparar usando apenas a data e ignorar o horário, utilize a forma passada pelo @motta.

A forma que passei só trará o resultado quando a hora e a data for idêntica a que está cadastrada no DB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Motta.

Então foi a sql que postei logo acima.

 

Estou usando essa aqui:

SELECT 
	T1.src,
	T1.id, 
	T1.data, 
	T2.src,
	T2.id, 
	T2.data, 
	SEC_TO_TIME( ( ABS( UNIX_TIMESTAMP( T2.data ) - UNIX_TIMESTAMP( T1.data ) ) ) ) AS tempo_total,
	SEC_TO_TIME(T1.duracao) as t1,SEC_TO_TIME(T2.duracao) as t2
FROM tabela T1, tabela T2
WHERE T1.id = ( T2.id -1 ) AND T1.src = '20' AND T2.src  = '20'
AND DATE( T1.data ) =  '2017-01-25' AND DATE( T2.data ) =  '2017-01-25'

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.