Descrição:
Como fazer uma consulta de período (data inicial e data final), porém adicionando também um filtro por hora, dentro do período selecionado.
Exemplo: Retornar do banco apenas os dados entre às 17 e 20 horas de todos os dias do período escolhido.
Solução:
No SQL Server existe a função DatePart(), responsável por extrair qualquer parte (hora, dia, mês, etc) de uma data. Na cláusula Where da consulta pode-se inserir algo como:
(E3Timestamp >= #<%DataInicial%># and E3Timestamp < #<%DataFinal%>#) and (DatePart(hh,E3TimeStamp) >= 17 and DatePart(hh,E3TimeStamp) < 20)
Onde:
DataInicial será a variável que o usuário irá configurar com a data/hora inicial da consulta e
DataFinal será a variável que o usuário irá configurar com a data/hora final da consulta.
Ou seja, irá filtrar pela data inicial e final; e apenas onde a hora for maior que 17 e menor que 20 horas.
Se a consulta for utilizada no E3Chart, esses dados serão todos ligados, isto é, uma linha será traçada conectando o último registro de um dia com o primeiro do próximo dia. Não ficará um espaço em branco entre eles. Este é o comportamento NORMAL do E3Chart.
OBS: Se a função DatePart() não funcionar em outros bancos deve-se procurar se existe uma similar para o banco desejado ou se a sintaxe é diferente.
No visitor comments posted.