Select para buscar um intervalo entre hoje e seis meses atrás - PHP/MYSQL
04/09/2015
0
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
Posts
04/09/2015
Augusto
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?
08/09/2015
Felipe Ribeiro
Se vc concatenar as variáveis $dataf e $datai direto no sql não vai, sem usar to_date() ?
09/09/2015
Augusto
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
Clique aqui para fazer login e interagir na Comunidade :)