Raul Pereira Postado Março 16, 2016 Denunciar Share Postado Março 16, 2016 Boa noite! Preciso fazer um relatório de 30 dias mas só pegar os horários de 6:00 até as 16:00, minha tabela só tenho o campo Datetime: 0000-00-00 00:00:00. Já fiz com um loop verificando todos os dias nesse período, mas está gerando muitas consultas ao banco de dados. Ex.: SELECT * FROM tbVenda WHERE venData BETWEEN "2016-01-01 06:00:00" AND "2016-01-01 16:00:00"; Alguma ideia de como faze-lo? com Somente uma consulta sql? Obrigado desde já! Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 17, 2016 Denunciar Share Postado Março 17, 2016 Tente assim: SELECT * FROM (SELECT * FROM tbVenda WHERE venData BETWEEN "2016-01-01 06:00:00" AND "2016-01-31 23:59:59") t1 WHERE TIME(tbVenda) BETWEEN "06:00:00" AND "16:00:00"; Link para o comentário Compartilhar em outros sites More sharing options...
0 Raul Pereira Postado Março 18, 2016 Autor Denunciar Share Postado Março 18, 2016 (editado) Em 17/03/2016 at 09:36, Denis Courcy disse: Tente assim: SELECT * FROM (SELECT * FROM tbVenda WHERE venData BETWEEN "2016-01-01 06:00:00" AND "2016-01-31 23:59:59") t1 WHERE TIME(venData) BETWEEN "06:00:00" AND "16:00:00"; Deu certo, só alterei a coluna no WHERE: ..."WHERE TIME(tbVenda) BETWEEN"... para ..."WHERE TIME(venData) BETWEEN"... Existe um porém, ao colocar horários que viram o dia, ele retorna a SQL em branco. Exemplo: Período: 16:00:00 as 05:00:00; Alguma ideia do que pode ocorrer? Editado Março 18, 2016 por Raul Pereira Link para o comentário Compartilhar em outros sites More sharing options...
0 Raul Pereira Postado Abril 5, 2016 Autor Denunciar Share Postado Abril 5, 2016 Resolvi o problema da seguinte forma: SELECT * FROM (SELECT * FROM tbVenda WHERE DATE(venData) BETWEEN "2016-01-01" AND "2016-01-31") t1 WHERE TIME(venData) BETWEEN "16:00:00" AND "23:59:59" OR TIME(venData) BETWEEN "00:00:00" AND "05:00:00"; Obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Raul Pereira
Boa noite!
Preciso fazer um relatório de 30 dias mas só pegar os horários de 6:00 até as 16:00, minha tabela só tenho o campo Datetime: 0000-00-00 00:00:00.
Já fiz com um loop verificando todos os dias nesse período, mas está gerando muitas consultas ao banco de dados.
Ex.: SELECT * FROM tbVenda WHERE venData BETWEEN "2016-01-01 06:00:00" AND "2016-01-01 16:00:00";
Alguma ideia de como faze-lo? com Somente uma consulta sql?
Obrigado desde já!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados