Ir para conteúdo

Arquivado

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

Gustavo Vilas

[Resolvido] Usando Between

Recommended Posts

Olá pessoal estou tentando fazer uma consulta entre datas e não esta retornando nada, tenho um campo select chamado:

 

data1 e outro data2.

 

Como posso fazer isso usando BETWENN pra ele pegar entre data1 e data2 os valores

 

meu sql

 

   $sql = "SELECT * FROM saida WHERE data_saida BETWEEN ( data_saida = '" . $_POST["data1"] . "' ) " ;
  $sql = $sql . " AND ( data_saida = '" . $_POST["data2"] . "')";

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se o BETWEEN serve para campos diferentes...ou seja... você tem data1 e data2, o BETWEEN funcionaria da seguinte forma...

SELECT `teste`.`id`, `teste`.`data`
 FROM `teste`
 WHERE `teste`.`data` BETWEEN '2010/06/01' AND '2010/06/03'
Bom...como eu disse...não sei se ele funciona com campos diferentes pq...ele precisa antes do BETWEEN usar um campo para a comparação que no caso do exemplo é `teste`.`data`.

Bom...mais caso eu esteje errado...peço desculpas ok.

 

Porém se você quer fazer uma busca onde a consulta seja entre as datas de entrada e saida...você poderia está fazendo algo do tipo.

SELECT `teste`.`id`, `teste`.`entrada`,`teste`.`saida`
 FROM `teste`
 WHERE `teste`.`entrada` >= '2010/06/01'  
 AND `teste`.`saida`  <= '2010/06/03'

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa mysql?

 

tem que cuidar o formato da data, seu post vem como Y-m-d ?

 

0000-00-00

 

se não vê o formato de data do teu banco.

pode ser esse o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto.. fiz desta forma que você falou >= e <= .. teve o mesmo resultado...

 

Eu uso MYSQL com esse formato Y-m-d

 

ai crie um campo quando o usuario digita ele vai preenchendo ex: 2010-06-01

 

So que ele tem que digitar ao contrario.. ai fica estranho para o usuario a gente se embanana todo estamos acustumados de uma maneira e digitando desta maneira a gente se perde legal.. teria uma forma de ele digitar dd/mm/aaaa so que na hora de comparar ele efetua a comparação ao contrário.

 

Ficou assim:

 

   $sql="SELECT * FROM saida WHERE data_saida >= " ."'" . $_POST['data1'] ."'";
   
  $sql = $sql .  " AND data_saida <= " ."'" . $_POST['data2'] ."'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

o correto é usar BETWEEN

SELECT * FROM `teste` WHERE `data` BETWEEN '0000-00-00' AND '0000-00-00'

e para pegar o que vem do form neste exemplo 00/00/0000

 

é só explodir a barra tem diversas funções na net

 

mas deixo uma aqui bem simples

 

$_POST['txt_data_fim']='26/06/2010';

$data_fim = implode('-',array_reverse(explode('/',$_POST['txt_data_fim'])));

echo $data_fim;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou

$this->data = implode("/", array_reverse(explode("/", substr($this->data , 0, 10)))).substr($this->data , 10);

Ou

 

echo "Data Normal = ".$data = '24/06/2010';

 
 function inverterDataUs($data){
 	
     $novaData = explode('/',$data);
     $dia = $novaData[0];
     $mes = $novaData[1];
     $ano = $novaData[2];
 	
     $dataRetorno = $ano."/".$mes."/".$dia;
     
     return $dataRetorno;
 }
 
 echo "<br>Data Invertida = ".inverterDataUs($data);

Bom...essas duas formas e tambem a do WDuarte funcionam corretamente...

 

E sobre

o correto é usar BETWEEN

 

SELECT * FROM `teste` WHERE `data` BETWEEN '0000-00-00' AND '0000-00-00'

Realmente o correto é usar o BETWEEN, porém...as datas de comparação dele são em campos diferentes o que dificulta o uso do BETWEEN, e isso...se for possivel usa-lo...sendo assim...recomendo usar algo do tipo

Porém se você quer fazer uma busca onde a consulta seja entre as datas de entrada e saida...você poderia está fazendo algo do tipo.

 

SELECT `teste`.`id`, `teste`.`entrada`,`teste`.`saida`

FROM `teste`

WHERE `teste`.`entrada` >= '2010/06/01'

AND `teste`.`saida` <= '2010/06/03'

 

 

 

Eu testei e deu certo aki Gustavo Vilas.

 

Abraços e boa sorte!!!

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.