Ir para conteúdo

Arquivado

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

Cliver

Busca MySQL | Datas

Recommended Posts

Olá Amigos, estou precisando de ajuda na seguinte questão: Trabalho com PHP e MySQL Tenho uma tabela do meu banco de dados onde as datas são salvas no modelo: dd/mm/aaaa Eu preciso fazer uma busca mais ou menos da seguinte maneira: $sql = mysql_query("SELECT * FROM contas_receber WHERE data_faturamento >= '$data_1' && data_faturamento <= '$data_2' ORDER BY id DESC"); Porém, isso não dá certo como eu queria pois só leva em consideração os dois primeiros digitos da data, ou seja, se eu colocar para buscar entre 10/01/2006 e 20/01/2006 o sistema buscará entre os dias 10 e 20 de todos os meses. Alguma solução sem precisar alterar a estrutura do banco de dados? Desde já, agradeço.---------------------------------------Bom, isso foi postado semana passa, tópico: 162751mas nenhuma solução aprensentada funcionou!Gostaria de reforçar o pedido de ajuda, por favor.Caso ninguém encontre solução sem eu precisar alterara estrutura do Banco de Dados, não verei outra soluçãoa não ser deixar os campos como 'date'.Mas daí tenho uma dúvida: ao imprimir um valor do campo date:0000-00-00 00:00:00 como faço para automaticamente deixá-lo como:dd/mm/AAAA ???Desde já, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Caso ninguém encontre solução sem eu precisar alterar

a estrutura do Banco de Dados, não verei outra solução

a não ser deixar os campos como 'date'.

 

Mas daí tenho uma dúvida: ao imprimir um valor do campo date:

0000-00-00 00:00:00 como faço para automaticamente deixá-lo como:

dd/mm/AAAA ???

 

Amigo,

 

Tenho certeza que utilizar o campo do tipo date (ou datetime, caso precise salvar o horário além da data) é a melhor solução. Não só por ordenar corretamente, mas também por você poder utilizar funções nativas do MySQL nele. Veja um exemplo:

 

SELECT
id, DATE_FORMAT(data, '%d/%m/%Y') as data_formatada
WHERE
YEAR(data) = YEAR(NOW())  AND  MONTH(data) = MONTH(NOW())
ORDER BY
DAYOFMONTH(data) DESC

 

Neste select, eu utilizei várias funções nativas do MySQL no campo data... repare que já estou formatando a seleção deste campo logo na query (o valor formatado virá com a chave "data_formatada"). Veja na cláusula WHERE como faria pra selecionar só os registros do mês corrente, e na ORDER BY como faria pra ordená-los de forma que os mais atuais viessem primeiro. Na realidade, neste exemplo específico, um "ORDER BY data DESC" daria na mesma... mas é só pra você saber da função DAYOFMONTH(). ;)

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não perca tempo e altere já a estrutura da sua tabela. Vai te custar um tempo hoje, mas economizará muita dor de cabeça amanhã.

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.