Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Filtro de Data

Tudo bem e com você?

Para o mesmo dia pensei exatamente dessa maneira. Mas se os dias forem diferentes como ficaria? Essa é minha dúvida. Exemplo:

queremos pegar todas as notas fiscais geradas no dia 2015-01-01 a partir de 08:00 horas da manhã até o dia 2015-01-02 até as 08:00 horas da manhã

Ou seja, um filtro pegando dois dias porém, de 8h da manhã do primeiro dia até 8h da manhã do segundo. Minha dúvida é como fazer isso

1 resposta
solução!

Agora entendi, bem nesse caso especificamente, fica um pouco mais complexo, porque isso é um problema que deveríamos tratar já no momento de criação da estrutura do banco de dados, vendo como analista de banco de banco de dados, seria ideal que ambos os campos DATA e HORA fossem um campo só do tipo TIMESTAMP, assim poderíamos buscar da seguinte forma:

SELECT * FROM [NOTAS FISCAIS] WHERE DATA_HORA BETWEEN '2015-01-01 08:00:00' AND 2015-01-02 08:00:00';

Mas dessa forma utilizando dois campos, um para DATA e outro para HORA, teríamos que utilizar o OU (OR) para também incluirmos os dados do outro dia, então recuperamos as vendas do dia 2015-01-01 feitas entre '08:00:00' e '23:59:59', e também as vendas do dia 2015-01-02 feitas entre '00:00:00' e '08:00:00', como na consulta abaixo:

SELECT * FROM [NOTAS FISCAIS] WHERE (DATA = '2015-01-01' AND HORA BETWEEN '08:00:00' AND '23:59:59') OR (DATA = '2015-01-02' AND HORA BETWEEN '00:00:00' AND '08:00:00');

Um outro detalhe é que usando um campo do tipo TIMESTAMP, mantemos um histórico temporal dos dados, e fica mais fácil essas consultas.

Espero ter esclarecido sua dúvida!