Como realizar esta consulta entre datas e horas?

26/02/2020

0

Olá boa tarde a todos, estou com um problema em minha consulta, eu tenho cadastro de ouvintes, e quero consultar quantos ouvintes participaram do dia a tal ao dia tal da hora tal a hora tal, só que a consulta que faço, elimina as participações de uma determinada hora, de todos os dias.

por exemplo, quero saber quantos ouvintes participaram de ontem do meio dia, até hoje 18 hrs, mas algo esta errado na minha consulta abaixo.

Só que com a consulta realizada, ele não mostra as gravações de ontem depois das 18 até meia noite, ele mostra as de ontem de meio dia as 18, e hoje ele mostra depois do meio dia até as 18..

O que seria?

          close;
          sql.Clear;
          sql.Add('select inscricao_id, inscricao_idouvinte, inscricao_idpromocao, ');
          sql.Add('inscricao_datacadastro, inscricao_horacadastro, tbouvinte.ouvinte_nome, ');
          sql.Add('tbouvinte.ouvinte_celular, tbouvinte.ouvinte_telefone from tbinscricao ');
          sql.Add('LEFT JOIN tbouvinte ');
          sql.Add('on(tbinscricao.inscricao_idouvinte = tbouvinte.ouvinte_id) ');
          sql.Add('WHERE inscricao_idpromocao like :pPromocao and ');
          sql.Add('inscricao_datacadastro BETWEEN :pData1 AND :pData2 ');
          sql.Add('and inscricao_horacadastro between :phora1 AND :phora2 ');
          sql.Add('ORDER BY inscricao_datacadastro, inscricao_horacadastro');
                  ParamByName('pPromocao').Value   := edt_promocao.EditValue;
                  ParamByName('pData1').Value      := dtinicial.Date;
                  ParamByName('pData2').Value      := dtfinal.Date;
                  ParamByName('pHora1').Value      := strtotime(timetostr(hrinicial.Time));
                  ParamByName('pHora2').value      := strtotime(timetostr(hrfinal.Time));
          open;


Agradeço a todos.
Júnior Pinheiro

Júnior Pinheiro

Responder

Posts

26/02/2020

Emerson Nascimento

tente assim:
close;
sql.Clear;
sql.Add('select inscricao_id, inscricao_idouvinte, inscricao_idpromocao, ');
sql.Add('inscricao_datacadastro, inscricao_horacadastro, tbouvinte.ouvinte_nome, ');
sql.Add('tbouvinte.ouvinte_celular, tbouvinte.ouvinte_telefone from tbinscricao ');
sql.Add('LEFT JOIN tbouvinte ');
sql.Add('on(tbinscricao.inscricao_idouvinte = tbouvinte.ouvinte_id) ');
sql.Add('WHERE inscricao_idpromocao like :pPromocao ');
sql.Add('and (inscricao_datacadastro >= :pData1 AND inscricao_horacadastro >= :phora1) ');
sql.Add('and (inscricao_datacadastro <= :pData2 AND inscricao_horacadastro <= :phora2) ');
sql.Add('ORDER BY inscricao_datacadastro, inscricao_horacadastro'
ParamByName('pPromocao').Value   := edt_promocao.EditValue;
ParamByName('pData1').Value      := dtinicial.Date;
ParamByName('pData2').Value      := dtfinal.Date;
ParamByName('pHora1').Value      := strtotime(timetostr(hrinicial.Time));
ParamByName('pHora2').value      := strtotime(timetostr(hrfinal.Time));
open;
Responder

27/02/2020

Júnior Pinheiro

Não funcionou, deu a mesma coisa.
Responder

27/02/2020

Emerson Nascimento

veja se assim funciona:
close;
sql.Clear;
sql.Add('select inscricao_id, inscricao_idouvinte, inscricao_idpromocao, ');
sql.Add('inscricao_datacadastro, inscricao_horacadastro, tbouvinte.ouvinte_nome, ');
sql.Add('tbouvinte.ouvinte_celular, tbouvinte.ouvinte_telefone from tbinscricao ');
sql.Add('LEFT JOIN tbouvinte ');
sql.Add('on(tbinscricao.inscricao_idouvinte = tbouvinte.ouvinte_id) ');
sql.Add('WHERE inscricao_idpromocao like :pPromocao ');
sql.Add('and (inscricao_datacadastro+inscricao_horacadastro BETWEEN :pDtHr1 AND :pDtHr2) ');
sql.Add('ORDER BY inscricao_datacadastro, inscricao_horacadastro');
ParamByName('pPromocao').Value   := edt_promocao.EditValue;
ParamByName('pDtHr1').Value      := dtinicial.Date + hrinicial.Time;
ParamByName('pDtHr2').Value      := dtfinal.Date + hrfinal.Time;
open;

Responder

01/03/2020

Júnior Pinheiro

Emerson obrigado pela sua ajuda, a única coisa que mudei para funcionar foi o parâmetro, de value para AsDateTime.

Obrigado mesmo.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar