Ir para conteúdo

POWERED BY:

Arquivado

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

_Thiago_Fernandes_

Comparação de datas

Recommended Posts

Boa Tarde galera, estou com a seguinte situação, fiz de tudo mas não consegui..

 

Tenho um sistema de banner onde tenho os seguintes campos data_entrada(DATE), data_vencimento(DATE)

 

queria saber como eu faço para selecionar apenas até a data que foi inserido a data_vencimento, depois disso ele não exibe mais no site, quero que ele saia automaticamente.

 

 

Abraços :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius, sinceramente não sei usar isso, to tentando fazer isso no próprio SQL, acho que não preciso nem comparar, apenas o banner tem que sair, por exemplo se eu cadastrar pra sair no dia 05/05/2013 no dia 06/05/2013 o banner não poderá exibir mais.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer no PHP:

 

Se DATA_VENCIMENTO for maior que DATA ATUAL, não exibe.

 

No MYSQL:

 

SELECT * FROM banner WHERE

DATA_VENCIMENTO <= CURDATE()

 

Não sei se a sintaxe está certa, mas a lógica basicamente é essa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suponhamos que os banners estão cadastrado em banco de dados.

$data = '2013-05-02';
$sql = "SELECT * FROM banner WHERE data_de_saida >= '$data'";
No caso eu puxos todos os registro com a data de saida superior ou igual data de do dia atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@maykel: coloquei o codigo do MySQL que você me passou e não me retornou nada

 

@Vinicius: no caso você fala, seria data1(data_entrada) < data2(data_vencimento), sim estão em DATE

@Ricardo: mas no caso aí no data_de_saida(data_vencimento) se o banner tiver cadastrado para sair (20013-05-05) ele vai sair automaticamente?

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o maykel quis dizer a data atual.

 

depende do banco

 

mysql acho que é CURRENT_DATE que equivalente a data de hoje.

 

foi só um exemplo, se estão no formato correto uma simples condição basta.

 

o filtro não vai tirar o banner de lá, ele vai filtrar e deixar que não apareça mas sempre vai estar no seu banco. basta saber se é melhovc tirar ele do banco ou continuar filtrando

Compartilhar este post


Link para o post
Compartilhar em outros sites

então.

 

vou transformar o select em um frase

 

 


SELECT * FROM banner WHERE data_vencimento <= CURRENT_DATE()

SELECIONA TUDO DA TABELA BANNER ONDE A DATA DE VENCIMENTO É MENOR OU IGUAL A DATA DE HOJE.

 

agora eu lhe pergunto.

 

data de vencimento é menor ou igual a data de hoje?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a data de vencimento é maior do que a data de hoje

 

Amigo o Vinicius ja deu a respotas de bandeija para você só bastava você alterar o sinal para maior, assim como ja tinha dito em minha função só no caso não tinha usado CURRENT_DATE().

SELECT * FROM banner WHERE data_vencimento > CURRENT_DATE()

Agora no caso se você quiser apagar os registros antigos agende uma tarefa no Crontab para fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade se alterar o sinal pra maior ele vai começar a pegar só banners vencidos, o que é errado.

 

mas vc mesmo deu a resposta.

 

se a data do vencimento é maior então não vai retorna o WHERE é nada mais que um filtro que vai tirar tudo aquilo que vc não quer

e vc esta dizendo que não quer nada vencido e ele esta obedecendo perfeitamente.

 

então esta funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

_Thiago_Fernandes_ a lógica nesse caso é simples.

 

  1. data_entrada - o banner tem uma data para começar a ser exibido.
  2. data_vencimento - o banner tem uma data para deixar de ser exibido

Vamos montar o SQL por partes primeiro com a data de entrada.

 

SELECT * FROM banner WHERE data_entrada >= CURRENT_DATE();

Resumindo o que a linha faz: Selecione todos os registro da tabela de banner com a data de entrada maior ou igual a data atual.

 

Agora vamos montar a parte de data de saida.

SELECT * FROM banner WHERE data_vencimento > CURRENT_DATE();

Resumindo o que a linha faz: Selecione todos os registro da tabela de banner com a data de saida maior ou igual a data atual.

 

Agora basta juntar as duas consultas

 

SELECT * FROM banner WHERE  data_entrada >= CURRENT_DATE() AND data_vencimento > CURRENT_DATE();

Agora caso seja necessario limpar os banner antigos agende um tarefa no CronTab, que chame um script com o seguinte SQL.

 

DELETE FROM banner WHERE data_vencimento <= CURRENT_DATE();

Ou se dejesar, desativar pode ser feito assim.

 

UPDATE banner SET status = 'desativar' WHERE data_vencimento <= CURRENT_DATE();

 

Bom amigo, acho que isso deve resolver sua duvida.

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.