Array
(
)

Select para buscar um intervalo entre hoje e seis meses atrás - PHP/MYSQL

Augusto
   - 04 set 2015

Boa noite pessoal,
Preciso fazer um select no bd que busque os registros com status "pendente" que foram imputados num intervalo de 6 meses atrás até o dia atual.
Para tal, utilizei o seguinte código:
<?
$dataf=date('d/m/Y');
$datai=date('d/m/Y', strtotime('-6 months'));
/* testando o resultado das variaveis */
echo "Data de hoje: " .$dataf. "  Data de seis meses atrás:  " .$datai. "";
?>
Até então beleza, retornou as datas corretamente.
No meu banco de dados tenho a data que o registro foi feito.
Dessa forma eu busco com o seguinte select:
$sql= "SELECT * FROM registros WHERE campo= '$variavel' and status = 'pendente' and data between to_date('&dataf','%d/%m/%Y') AND to_date('&datai','%d/%m/%Y')";

Usando o to_date retorna erro de sql
Usando date_format ele não retorna erro, mas também não busca o valor.
o campo data no banco tá com o formato DD/MM/AAAA
Poderiam me auxiliar?

Augusto
   - 04 set 2015

Detalhe: Rodei o sql direto no banco, e retornou o resultado correto.

SELECT * FROM registros WHERE campo = '1' and status = 'pendente' and data between ('04/03/2015') AND ('04/09/2015')

O que mostra que o problema está na formatação da data na variável, o que devo alterar?

Felipern
|
MVP
    08 set 2015

Bom dia,
Se vc concatenar as variáveis $dataf e $datai direto no sql não vai, sem usar to_date() ?

Augusto
   - 09 set 2015

Boa tarde Felipe,

Consegui resolver o problema.

Na verdade era porque eu não estava trabalhando com a data no formato Y-m-d
Mudei a tela do cadastro dos registros, pra imputar nesse formato, faço o select e depois na hora de retornar pro usuário eu uso esse código:

$data = explode("-",$data);
list($ano, $mes, $dia) = $data;
$data = "$dia/$mes/$ano";

Pra ficar no formato mais "bunitinho" 00/00/0000