Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando José

[Resolvido] Filtrar campo date

Recommended Posts

Pessoal,

 

Preciso criar dois filtros em um relatório.

 

Tenho uma tabela chamada venda_parcela, nesta tabela tenho um campo tipo DATE chamado vencimento.

 

Relatório 1) Preciso filtrar todos os registros que vão vencer daqui 7 dias.

 

Relatório 2) Preciso filtrar todos os registros que vão vencer entre hoje até 7 dias próximos.

 

Alguém pode me ajudar?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1)

select *

from venda_parcelada

where

(vencimento - INTERVAL 7 DAY) = date(now())

 

2)

select *

from venda_parcelada

where

vencimento BETWEEN date(now()) and date(now() + INTERVAL 7 DAY)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado giesta, era isso mesmo.

 

Agora estou com outro problema. Nesse SQL

 

SELECT c.nome, c.celular, vp.vencimento, vp.parcela
			 FROM venda_parcela vp, cliente c, venda v
			 WHERE vp.venda = v.codigo
			 AND c.celular != ''
			 AND vp.pago = 'N'
			 AND v.cliente = c.codigo
			 AND (
			     vencimento - INTERVAL 0
			     DAY
			 ) = DATE( NOW( ) )
			 ORDER BY nome

Esse relatório tiramos todos os dias para ver as parcelas que estão vencendo no dia, de segunda-feira a sexta-feira, mas temos parcelas que vencem no final de semana, dai precisamos que elas sejam listadas no relatório de segunda-feira, como posso fazer isso?

 

Tem como falar pro mySQL no relatorio de segunda-feira contar os dois dias anteriores?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer algo como:

 

 

SELECT c.nome,       c.celular,       vp.vencimento,       vp.parcela  FROM venda_parcela vp, cliente c, venda v  WHERE vp.venda = v.codigo    AND c.celular != ''    AND vp.pago = 'N'    AND v.cliente = c.codigo    AND (vencimento = CURDATE()         OR (WEEKDAY(vencimento) IN (5, 6)             AND vencimento BETWEEN CURDATE() - INTERVAL 2 DAY AND CURDATE() - INTERVAL 1 DAY))  ORDER BY c.nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido.

 

Na tela do filtro ficou:

<form id="form1" name="form1" method="get" action="gerar/">
  <p><strong>Filtrar</strong></p>
  <p>Vencidas em:</p>
    <label>
      <input name="vencimento" type="radio" id="radio" value="0" checked="checked" /> Hoje
    </label>
    <br /><br />
    <label>
      <input type="radio" name="vencimento" id="radio" value="2" /> 
      2 dias
    </label>
    <br /><br />
    <label>
      <input type="radio" name="vencimento" id="radio" value="7" /> 
      7 dias</label>
  <p> </p>
  <p>
    <input name="button" type="submit" class="botao2" id="button" value="Gerar" />
  </p>
</form>

No relatório ficou:

if($vencimento == 0 and date('w') == 1)
{
	$consulta = "SELECT c.nome, c.celular, vp.vencimento, vp.parcela
			 FROM venda_parcela vp, cliente c, venda v
			 WHERE vp.venda = v.codigo
			 AND c.celular != ''
			 AND vp.pago = 'N'
			 AND v.cliente = c.codigo
			 AND vencimento BETWEEN date(now() - INTERVAL 2 DAY) and date(now()) 
			 ORDER BY vencimento,nome";
}
else
{
	$consulta = "SELECT c.nome, c.celular, vp.vencimento, vp.parcela
			 FROM venda_parcela vp, cliente c, venda v
			 WHERE vp.venda = v.codigo
			 AND c.celular != ''
			 AND vp.pago = 'N'
			 AND v.cliente = c.codigo
			 AND (
			     vencimento - INTERVAL '$vencimento'
			     DAY
			 ) = DATE( NOW( ) )
			 ORDER BY nome";
}

Obrigado galera!

 

Amanhã vou fazer os últimos testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.