Selecionar Dados em Intervalos
12/03/2013
0
tenho um banco de dados firebird 1.5, no mesmo uma tabela que grava informações a cada 1 segundo.
usando o comando BETWEEN consigo pesquisar em intervalos. exemplo:
tem um campo datahora do tipo TIMESTAMP.
então eu mando os dois valores via parametros.
select * from POCO_ITEM where COD_POCO=:COD_POCO and DATA_HORA between :data_horaINI and :data_horaFIN
COM ISSO EU CONSIGO PESQUISAR ENTRE UM INTERVALO DE TEMPO (DATAHORA) INICIAL E FINAL, mas como os dados são gravados a cada 1 segundo, ele me mostra todos os dados a cada um segundo claro.
mas eu quero fazer essa mesma CONSULTA, sendo que ele me retorne os dados a cada 1 minuto, no intervalo que eu escolhi.
tem como fazer isso?
Obrigado! Deus te abençoe!
Laérciolima
Posts
12/03/2013
Francisco Macário
formatando o campo DATA_HORA para desconsiderar os segundos e milesegundos.
Espero que a ideia lhe ajude.
12/03/2013
Laérciolima
o campo data_hora é gravado assim, (30/10/2009 13:07:33)
quando dou um select usando between ele retorna assim, exemplo pesquisar entre 30/10/2009 13:10:00 e 30/10/2009 13:15:00 RESULTADO:
30/10/2009 13:10:00
30/10/2009 13:10:01
30/10/2009 13:10:02
30/10/2009 13:10:03
30/10/2009 13:10:04
30/10/2009 13:10:05
...................
até chegar ao final
30/10/2009 13:15:00.
Mais o que eu quero é que retorne assim:
30/10/2009 13:10:00
30/10/2009 13:11:00
30/10/2009 13:12:00
30/10/2009 13:13:00
30/10/2009 13:14:00
30/10/2009 13:15:00
Obrigado pela intenção!
Alguem? Obrigado!
12/03/2013
Joel Rodrigues
12/03/2013
Francisco Macário
Olá.
Bom primeiro você deve pesquisar como mostrar no FB 1.5 campo TimeStamp ou Datetime sem mostrar os segundos, como mostrar apenas a data+hora+minutos.
faça um teste com sua instrução +/- assim
select
COD_POCO, DATA_HORA
from
POCO_ITEM
where
COD_POCO=:COD_POCO and DATA_HORA between :data_horaINI and :data_horaFIN
group by
COD_POCO, DATA_HORA
Para maior entendimento pesquise por group by para FB 1.5.
Pesquise tambem por UDF que talvez voce tera que usar.
At.
12/03/2013
Joel Rodrigues
1 - Agrupando os registros pelo minuto. Dessa forma, você teria, por exemplo, o total somado a cada 1 minuto.
2 - Você seleciona todos os registros, formatando apenas o campo para não trazer os segundos. Dessa forma, você terá sempre a mesma quantidade de registros que tem hoje, apenas omitindo os segundos.
Por exemplo, supondo os seguintes registros:
13/03/2013 17:05:00, 10 13/03/2013 17:05:01, 10 13/03/2013 17:05:02, 10
Agrupando, você teria:
13/03/2013 17:05, 30
Repare que é um único registro equivalente aos três anteriores, só que agrupados pelo minuto.
No segundo caso, você teria:
13/03/2013 17:05, 10 13/03/2013 17:05, 10 13/03/2013 17:05, 10
Os mesmos 3 registros, só que sem os segundos.
12/03/2013
Joel Rodrigues
Boa sorte.
Clique aqui para fazer login e interagir na Comunidade :)