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
SELECT *
FROM NOMEDATABELA
Where DATEPART(mi, E3TimeStamp) % 10 = 0 AND DATEPART(ss, E3TimeStamp) = 00
ORDER BY NOMEDATABELA.E3TimeStamp ASC
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.