Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Filtrar por data Between no adianti Olá pessoal! Estou fazendo um relatório que precisa me trazer por data e período. Por data consegui blz usando: ...
JM
Filtrar por data Between no adianti  
Fechado
Olá pessoal! Estou fazendo um relatório que precisa me trazer por data e período. Por data consegui blz usando:

  1. <?php
  2. $criteria->add(new TFilter("date_format(inscricao.datainscricao,'%Y-%m-%d')"'='$data->datainscricao));
  3. ?>


So que por período não esta dando certo informando a data inicio e fim. No banco esta no formato timestemp: 2014-07-31 19:52:47, estou usando o between não esta dando certo procurei varias maneiras mas até agora nada.

  1. <?php
  2. $criteria->add(new TFilter("date_format(inscricao.datainscricao,'%Y-%m-%d')"'='$data->datainicio$data->datafim));
  3. ?>


Ele chega a filtrar só que não traz todos os registros. No mysql mesmo direto no banco traz 4 registros só que no relatório em pdf só 3 informando a mesmos período.

Alguém poderia dar um help por favor.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (6)


FC

Olá Tente isso.

  1. <?php
  2. $criteria->add(new TFilter('datainscricao''BETWEEN'$data->inicio));
  3. $criteria->add(new TFilter(''''$data->datafim));
  4. ?>


Abraços...
PD

Oi Jackson,

O suporte ao between foi acrescentado na 1.0.3, conforme os changelogs. A forma de usar é:

  1. <?php
  2. new TFilter('campo' 'BETWEEN'12);
  3. ?>


Embora com datas, você sempre pode usar também dois filters, um com >= e outro com <=...

Att,
Pablo
JM

Olá Pablo e Felipe

Deu certo usando o between que Pablo me falou
  1. <?php $criteria->add(new TFilter("date_format(inscricao.datainscricao,'%Y-%m-%d')"'between'$data->datainicio$data->datafim)); ?>


Como faço para exibir a data na sequencia correta ao usuario pq na tela quando escolhe uma data ele esta exibindo assim "2014-08-04" gostaria que ele exibi-se 04/08/2014, como devo proceder?

Desde já agradeço. Obrigado!

FC

$campoData->setMask('dd/mm/yyyy');
MA

Estou com uma dúvida semelhante.
Estou usando sqlite3, e ele não permite campos DATE, somente TEXT.

Se eu usar o
  1. <?php
  2.     new TFilter('campo' 'BETWEEN'12);
  3.     ?>


que o Pablo informou?
AF

Marcos, não sei se já resolveu seu problema. Mas caso negativo, pelo sql no sqlite, esse exemplo funciona:

select * from atendimento where substr(data_atendimento,7,4)||substr(data_atendimento,4,2)||substr(data_atendimento,1,2) between '20180427' and '20180501';

Atenciosamente,