Ir para conteúdo

POWERED BY:

Arquivado

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

Dexter Morgan

pesquisa por data PHP Mysql

Recommended Posts

Bom dia, estou tentando fazer uma pesquisa por data, mas como a data esta em fomato americano só consigo buscar se digitar 2013-06-17 tentei converter no select mas nao está dando certo:

$sql = "SELECT *, DATE_FORMAT(data, '%d-%m-%Y') AS data1 FROM orcamentos WHERE ((nome LIKE '%".$busca."%') OR ('%".$busca."%')) OR ((empresa LIKE '%".$busca."%') OR ('%".$busca."%')) OR ((produto LIKE '%".$busca."%') OR ('%".$busca."%')) OR ((data1 LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY id_orcamento DESC LIMIT $inicio, $qnt";

alguém sabe uma solução ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é muito recomendado usar LIKE em campos do tipo date

se quizer procurar por data no formato brasileiro tente assim

WHERE DATE_FORMAT(data, '%d-%m-%Y') = '$data'
ou ainda mais facil utilize data no formato americano assim
WHERE data = '$data'

Compartilhar este post


Link para o post
Compartilhar em outros sites

não use o alias(data1) no WHERE, data é um varchar?

 

converta a data no WHERE:

 

 

select * from datas where date_format(data, '%d/%m/%Y') = '18/03/2013'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Considerando que você entre com a data 17/06/2013:

 

<?php

$data = "17/06/2013";

$x = explode('/',$data);

//Muda a data para o padrão Y-m-d
$busca = $x[2]."-".$x[1]."-".$x[0];

$sql = ...
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora que o shini disse o campo nao era varchar era date, ai mudei na tabela para varchar, e quando vai gravar mando gravar dessa forma:

$data = date("d-m-Y");

assim eu consigo buscar as datas como eu quero, obg pela ajuda de todos ... a data é mais para filtragem mesmo :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora que o shini disse o campo nao era varchar era date, ai mudei na tabela para varchar, e quando vai gravar mando gravar dessa forma:

 

campo data é date e não varchar, no post #3 foi uma pergunta, se quiser pegar um mes em especifico vc pode fazer

 

 

select * from datas where extract(month FROM data) = '10' and extract(year FROM data) = '2011'
select * from datas where date_format(data, '%m-%Y') = '10-2001'

 

deixe esse campo como date!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma dica Dexter Morgan, é melhor você alterar o campo para date,

caso contrário você terá problemas quando precisar gerar relatórios, por exemplo

não vai conseguir fazer uma ordenação.

 

se o campo for varchar uma simples ordenação do tipo "ORDER BY data ASC"

não vai funcionar.

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.