Ir para conteúdo

POWERED BY:

Arquivado

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

William Espindola

Entre horas quando for maior que 1 e maior que 10 minutos

Recommended Posts

Olá pessoal, todo bom?

 

Galera me ajudem nesta consulta por favor :rolleyes:

 

Tenho uma tabela onde é registrados alguns eventos de vários equipamentos, As colunas são: id, codigo, nome, evento, data.

Só que alguns equipamentos tem vários eventos com minutos de diferença, então preciso pegar os eventos somente quando esta diferença for maior que 10 minutos.

 

Se eu tive-se duas colunas de data poderia usar tranquilamente o TIMEDIFF(), só que eu tenho somente uma coluna de data do tipo DATETIME.

 

Alguém tem alguma dica? Obrigado pela força. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a função NOW() como se fosse a segunda coluna de data, afinal você quer a diferença entre a data gravada e a hora atual não? Basta utilizar o timediff() com a sua coluna de data e a função now();

 

Veja também este tópico http://forum.imasters.com.br/topic/466329-listar-registros-criados-a-mais-de-4-horas/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa obrigado pela ajuda amigão, mas assim não vai dar. Sente o drama: :grin:

 

id - codigo - nome - data

01 - 0101 - equ1 - 2012-10-02 10:02:00

02 - 0101 - equ1 - 2012-10-02 10:04:00

03 - 0101 - equ1 - 2012-10-02 10:07:00

 

 

Parece loucura, mas tenho que comparar a hora de cada registro (linha), e se a diferença entre elas for maior que 10 minutos eu pego os registros, se não como esta aqui no exemplo eu pego somente um registro.

 

Será que da? Obrigado pela força :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entedi porque "não vai dar". A função funciona. E você vai saber a diferença de cada linha. Depois basta fazer

outro SELECT para pegar os cujo a diferença é maior igual a 10 minutos. Qual a dificuldade??????

A query abaixo funciona perfeitamente e traz a diferença em minutos. Tudo é uma questão de lógica.

 

SELECT ROUND(TIME_TO_SEC(TIMEDIFF('2012-06-12 10:53:00','2012-06-11 10:43:00'))/60) AS diff_minutos

 

Estude a query que você consegue. É só fazer uma query por fora depois e selecionar os caras cujo > 10 ex:

 

SELECT tb.id FROM (SELECT id, ROUND(TIME_TO_SEC(TIMEDIFF('2012-06-12 10:53:00','2012-06-11 10:43:00'))/60) AS diff_minutos) AS tb WHERE tb.diff_minutos >= 10

 

Agora só não vai dar pra fazer se você tiver preguiça mesmo :thumbsup:

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.