Ir para conteúdo
Fórum Script Brasil
  • 0

Selecionar registros com a data maior que a data atual


cassianooliver

Pergunta

Estou selecionando 6 eventos do BD...

quando esse evento já foi realizado, ou seja, já aconteceu, ele não deve mais aparecer..

então pensei no seguinte, tenho que selecionar os eventos onde a data dele seja maior que a data atual...

fiz assim:

$data_atual = date("Y/m/d");
$sql   = "SELECT * FROM eventos WHERE data > $data_atual ORDER BY data ASC LIMIT 0, 6";

o campo data ta no formato DATE do mysql...

mas do jeito que ta aí, sempre exibe todos os eventos..

coloquei 3 eventos para teste

evento1 - 2008/01/30

evento2 - 2008/01/31

evento3 - 2008/03/08

Quero que somente o evento3 seja exibido, pois os outros já foram realizados....

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Se o campo é do tipo DATE então ele segue o padrão aaaa-mm-dd e não aaaa/mm/dd.

putz, falta de atenção minha....

concertei aqui, mas ainda mostra todos os eventos...

$data_atual = date("Y-m-d");
$sql   = "SELECT * FROM eventos WHERE data > $data_atual ORDER BY data ASC LIMIT 0, 6";

Link para o comentário
Compartilhar em outros sites

  • 0

sim...

consegui resolver, mas não foi no select dos dados, mas sim dentro do while que funcionou a comparação das datas...

while (...) {
     $data_bd = $dados["data"];
     $data_atual = $date("Y-m-d");
     if($data_bd > $data_atual) {
          mostra os eventos....
     }
}

pelo que pesquisei, pra poder comparar no select, teria que usar mktime() mas aí daria mó trabalhão...

Link para o comentário
Compartilhar em outros sites

  • 0

Com o seu código não... mas acabei de criar um pra comprovar...

Tabela

CREATE TABLE tst (
id int(3) NOT NULL auto_increment,
nome varchar(60) NOT NULL,
data DATE NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM charset=UTF8;
Scritp
<?php
include 'conexao.php';

$data = date('Y-m-d');
$query = "SELECT * FROM tst WHERE data >= '$data'";
$sql = mysql_query($query)OR DIE(mysql_error());
echo 'Query 1 '.$query.'<BR>';
while($x = mysql_fetch_assoc($sql)){
echo $x['nome'].' - '.$x['data'].'<BR>';
}

echo '<BR><BR><BR><BR>';
$query = "SELECT * FROM tst WHERE data > '$data'";
$sql = mysql_query($query)OR DIE(mysql_error());
echo 'Query 2 '.$query.'<BR>';
while($x = mysql_fetch_assoc($sql)){
echo $x['nome'].' - '.$x['data'].'<BR>';
}

echo '<BR><BR><BR><BR>';
$query = "SELECT * FROM tst WHERE data < '$data'";
$sql = mysql_query($query)OR DIE(mysql_error());
echo 'Query 3 '.$query.'<BR>';
while($x = mysql_fetch_assoc($sql)){
echo $x['nome'].' - '.$x['data'].'<BR>';
}

echo '<BR><BR><BR><BR>';
$query = "SELECT * FROM tst WHERE data <= '$data'";
$sql = mysql_query($query)OR DIE(mysql_error());
echo 'Query 4 '.$query.'<BR>';
while($x = mysql_fetch_assoc($sql)){
echo $x['nome'].' - '.$x['data'].'<BR>';
}
?>

Em anexo a saída do script (cadastrei 4 eventos, 1 anterior a hoje, outro exatamente hoje, e dois após hoje), note que ali poderia ser substituído $data simplesmente por NOW() (função do MySQL que pega a data/hora do momento de execução da query).

post-20097-1202387488_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...