KB-13180: Consulta SQL retornando valores de 10 em 10 minutos.

Descrição:

Como fazer para que uma consulta SQL retorne somente os valores de 10 em 10 minutos, mesmo quando o Histórico registra os valores a cada segundo?

Exemplo:
16h 30min – tag1 = 1 – tag2 = 20
16h 40min – tag1 = 5 – tag2 = 23
16h 50min – tag1 = 3 – tag2 = 15

Solução:

Uma maneira é utilizando consulta SQL com os comandos apropriados de acordo com o banco de dados que se está utilizando.

Exemplo de consulta para o banco de dados Access:

SELECT Historico.E3TimeStamp,Historico.Interno1,Historico.Interno2,Historico.Interno3
FROM Historico
WHERE Second(E3TimeStamp) = 0 and Minute(E3TimeStamp) Mod 10 = 0
ORDER BY Historico.E3TimeStamp ASC

Exemplo de consulta para o banco de dados SQL:

SELECT *
FROM NOMEDATABELA
Where DATEPART(mi, E3TimeStamp)  % 10 = 0 AND DATEPART(ss, E3TimeStamp)  = 00
ORDER BY NOMEDATABELA.E3TimeStamp  ASC

Ou, ainda para o banco de dados SQL, não usando função “% 10”, assim:

SELECT *
FROM NOMEDATABELA
WHERE (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 0) OR (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 10) OR (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 20) OR (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 30) OR (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 40) OR (DATEPART(ss, E3TimeStamp) = 0) AND (DATEPART(mi, E3TimeStamp) = 50)
ORDER BY NOMEDATABELA.E3TimeStamp  ASC

Obs.: Em anexo encontra-se aplicação exemplo.

Anexos:

Exemplo13180

Este artigo foi útil? Was this post helpful?
Yes0
No0

Leave a Reply

Your email address will not be published.Required fields are marked *