Ir para conteúdo

POWERED BY:

Arquivado

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

Célio-Ctba

Busca entre datas

Recommended Posts

Tenho um código que faz busca entre 2 datas entradas pelo user em um campo de form.

Só q a busca é feita pelo dia/mes/ano já que no banco é essa a estrutura do campo data, estou c/ dificuldade para fazer a busca dos aniversariantes dentro de um período.

Por ex.: Quero buscar todos os aniversariantes entre 04/10 e 07/10, se eu colocar o ano tb, ele só vai me trazer os aniversariantes entre essas datas mas q sejam nascidas no ano q coloquei.

Ex.: se eu colocar de 04/10/2002 a 07/10/2006 ele me traz todas as datas entre elas que não é o caso, quero apenas os q sejam nascidos entre os dias 04/10 e 07/10 e não me importa o ano.

 

Está assim:

$data = $_POST["inicio"];		   $abre = explode("/", $data); $data1 = $_POST["fim"];$fecha = explode("/", $data1);$busca = mysql_query("SELECT * FROM tabela WHERE data >= '".$abre["2"].$abre["1"].$abre["0"]."' AND data <= '".$fecha["2"].$fecha["1"].$fecha["0"]."'", $db);

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom,

eu lhe aconselharia a mudar esse campo para DATE, pois ficaria muito mais facil e rapido para fazer essas consultas "refinadas"...

 

mas vamos ver se da para ajudar assim mesmo...

tente assim uma vez:

 

$data = $_POST["inicio"];		  $abre = explode("/", $data);$data1 = $_POST["fim"];$fecha = explode("/", $data1);$busca = mysql_query("SELECT * FROM tabela WHERE data >= '".$abre["2"].$abre["1"]."%' AND data <= '".$fecha["2"].$fecha["1"]."%'", $db);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Samuel, dessa forma ele não dá erro, mas não traz nenhum resultado tb, por mais que eu coloque qualquer uma das datas que tenho no banco, ele sempre traz o resultado vazio.Dei um echo no select pra ver como ele esta buscando:

SELECT * FROM pesfis WHERE data BETWEEN '0110%' AND '0310%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim o tipo do campo no mysql é date

Ahh! :D

se o campo for do tipo DATE, tente assim:

 

SELECT * FROM pesfis WHERE data BETWEEN DAY(data)='".$abre["2"]."', MONTH(data)='".$abre["1"]."' AND DAY(data)='".$abre["2"]."', MONTH(data)='".$abre["1"]."'

 

 

ah! e aquele outro que eu passei, talvez funcione se fizer assim: (eu tinha esquecido de colocar as "barras" para separa o mes do dia...)

$data = $_POST["inicio"];

$abre = explode("/", $data);

$data1 = $_POST["fim"];

$fecha = explode("/", $data1);

$busca = mysql_query("SELECT * FROM tabela WHERE data >= '".$abre["2"]."/".$abre["1"]."%' AND data <= '".$fecha["2"]."/".$fecha["1"]."%'", $db);

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa isso soh demonstra o qnto eu não sei nd de PHP hauhuahuahumas eu faria no MySQL assimfaria busca com tds os anos mesmo ae faria uma subquery para pegar somente os MONTH(mes) e DAY(dia) corretos dos aniversarios

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara q trocinho, devo estar fazendo alguma caca, usando o q você passou:

"SELECT * FROM pesfis WHERE data BETWEEN DAY(data)='".$abre["0"]."', MONTH(data)='".$abre["1"]."' AND DAY(data)='".$fecha["0"]."', MONTH(data)='".$fecha["1"]."'")or die(mysql_error());
Veja a msg de erro:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(data)='01', MONTH(data)='01' AND DAY(data)='12', MONTH(data)='

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saiu gente, agora foi:

 

$busca = mysql_query("SELECT * FROM pesfis WHERE RIGHT(data,5) BETWEEN '".$abre[1]."-".$abre[0]."' AND '".$fecha[1]."-".$fecha[0]."' ", $db);

Galera, mto obrigado a todos !!!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:Dlegal cara.tava rachando a cabeça aqui agora, e não tava conseguindo...isso vai ser útil pra mim pra você, e concerteza pra muitas outras pessoas ;)

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.