Como selecionar dados de uma tabela mysql entre duas datas?
Tenho uma tabela no banco de dados com o campo data no formato Y-m-d H:i:s e gostaria de selecionar os dados em um intervalo de datas. Por exemplo, entre os dias 10/11/2010 até o dia 09/12/2010.
Fiz ele da forma abaixo:
$query_R1 = "SELECT *, date_format(data, '%d/%m/%Y') as data FROM estoque WHERE date_format(data, '%d/%m/%Y') BETWEEN '".$_POST['datai']."' AND '".$_POST['dataf']."' ORDER BY data DESC";
Desta forma não está dando certo, ele só está verificando o dia. Como faço para resolver isto?
Fiz ele da forma abaixo:
$query_R1 = "SELECT *, date_format(data, '%d/%m/%Y') as data FROM estoque WHERE date_format(data, '%d/%m/%Y') BETWEEN '".$_POST['datai']."' AND '".$_POST['dataf']."' ORDER BY data DESC";
Desta forma não está dando certo, ele só está verificando o dia. Como faço para resolver isto?
comentários (0)
suspender
Lista de Respostas:
08/12/2010 9:27pm
(~14 anos atrás)
(~14 anos atrás)
Adriano, é só você mudar a abordagem. Ao invés de converter a data do BD, você converte a data enviada pelo usuário assim:
// Checar se a data eh valida ... // Converter data para formato do BD $data_i = preg_replace('/^(\d+)\/(\d+)\/(\d+)$/', '${3}-${2}-${1}', $_POST['datai']); $data_f = preg_replace('/^(\d+)\/(\d+)\/(\d+)$/', '${3}-${2}-${1}', $_POST['dataf']); // Consultar $query_R1 = "SELECT *, date_format(data, '%d/%m/%Y') as data FROM estoque WHERE data BETWEEN '{$data_i}' AND '{$data_f}' ORDER BY data DESC";