Ir para conteúdo
Fórum CódigoFonte.net
Tadeujt

Dúvida sobre como comparar data no mysql

Recommended Posts

Pessoal, eu tenho um tabela de eventos onde contem 3 campos: "d , m , y" nesses campos vou receber a data do evento.

Eu preciso mostrar os dois proximos eventos apartir da data do sistema.

Porém como a data esta separada em 3 campos eu nao sei como fazer essa comparação. Ja procurei algum comando para concatenar os tres campos e comparar com o sysdate mas nao achei tbm. alguem poderia me dar uma ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É sempre bom consultar a documentação do MySQL quando surgem estas dúvidas :)

Veja aqui http://dev.mysql.com/doc/refman/5.0/en/dat...ion_str-to-date

Que existe uma função chamada str_to_date que converte para um formato de data os seus campos, a partir daí é só comparar com o "curdate()"

Exemplo:

select * from clientes where str_to_date(dia + "/" + mes + "/" + ano) > curdate()

acho que funciona... testae

Compartilhar este post


Link para o post
Compartilhar em outros sites

testei assim:

select * from calendario_mssgs where str_to_date(d + '/' + m + '/' + y) > curdate();

testei tbm usando aspas duplas e continua o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma dúvida: pq vc criou 3 campos para a data? não era mais fácil um campo só do tipo date?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade nao criei, comecei a trabalhar em uma empresa de desenvolvimento web, e peguei um site para dar suporte, e preciso mostrar os dois proximos eventos que irao ocorrer. Porém o cara quando criou toda parte de eventos pegou a data separada, criando estes 3 campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz uns testes aqui e acho que os teus campos estão no formato inteiro, por isto que a concatenação padrão não funciona.

Mas que tal forçar? ehehehe

veja o código a seguir:

SELECT str_to_date(concat(d,"/",m,"/",a), "%d/%m/%Y") as data FROM `teste`
where str_to_date(concat(d,"/",m,"/",a), "%d/%m/%Y") < curdate()

pelos meus testes aqui deu certo.

a única diferença é utilizar a função "concat" que recebe as strings que desejamos juntar. depois é só converter a string pra data e pronto. campo de data agora funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...