Ir para conteúdo

POWERED BY:

Arquivado

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

alvarogtc

[Resolvido] Comparar datas no db e fazer consulta no banco

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.