alvarogtc 1 Denunciar post Postado Setembro 19, 2010 Pessoal, to com uma duvida q nao consigo acertar a logica da consulta tenho no meu banco de dados $expira = YYYY-mm-dd; q é a data q vai expirar o cadastro preciso fazer pegar o expira e comparar com a data de HJ verificar se a diferenca é menor ou igual a 30 pra poder imprimir em vermelho Achei centenas de funcoes q fazem a comparacao e retornam o resultado.. Agora oq preciso é fazer uma consulta no banco mais nao consigo pegar a logica q pelo menos na minha cabeca seria algo mais ou menos assim select * from mydb where DATEDIFF($expira, $datadehj) <= 30 alguem sabe como eu faco isso corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 19, 2010 A sua consulta deveria ter funcionado. Eu trocaria somente $datadehj por NOW, da seguinte forma: $sql = 'SELECT `campo1`, `campo2`, `campo3` FROM `mydb` WHERE DATEDIFF (\''.$expira.\'', DATE_FORMAT(NOW(), \'%Y-%m-%d\')) <= 30 ';Teste dessa forma e avise se funcionou. Procure também por BETWEEN, e veja o manual do Mysql.http://dev.mysql.com/doc/refman/4.1/pt/date-calculations.html [EDIT] Com o BETWEEN, você altera o $expira para 30 dias anteriores com mktime, e insere na cláusula WHERE a exigência de que seja entre "$expira-30" e a data atual. Não sei se a lógica estaria certa. Mal pensei antes de falar, mas pode ser que ajude. To com pressa pra sair... [/EDIT] Outra forma, menos lógica, mas funcional, de se resolver isso, é selecionando todos os registros do BD, fazendo a diferença no PHP e filtrando para exibir somente os que atendam à sua necessidade. Não sou muito bom com MySQL. Caso não funcione da forma que te mandei e não queira fazer em PHP, vá até a seção de MySQL, e não a de PHP. Até mais. Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Setembro 19, 2010 Funcionou perfeitamente... mais uma vez obrigada... Compartilhar este post Link para o post Compartilhar em outros sites