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:

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


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.

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


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 Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (6)


FC

Olá Tente isso.

<?php$criteria->add(new TFilter('datainscricao', 'BETWEEN', $data->inicio));$criteria->add(new TFilter('', '', $data->datafim));?>


Abraços...
PD

Oi Jackson,

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

<?phpnew TFilter('campo' , 'BETWEEN', 1, 2);?>


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
<?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
<?php    new TFilter('campo' , 'BETWEEN', 1, 2);    ?>


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,