Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma data no meu db, e preciso mostrar essa data 3 meses antes dela vencer.
Então fiz assim:
SELECT * FROM filiados WHERE MONTH(cpdValidade) = MOD(MONTH(CURDATE()), 3)
Só que agora também preciso mostrar 2 meses antes, 1 mês antes e se for o mesmo mês mostra também.
Até tentei, mas não funcionou:
SELECT * FROM filiados WHERE MONTH(cpdValidade) = MOD(MONTH(CURDATE()), 3) OR MONTH(cpdValidade) = MOD(MONTH(CURDATE()), 2) OR MONTH(cpdValidade) = MOD(MONTH(CURDATE()), 1)
Tem outra forma de resolver isso?
Eu preciso sempre comparar o mês e ano ou seja 1/1/2012 tenho que mostrar que faltam 3 meses para chegar nesta data depois que faltam 2 falta 1.
Mas o dia não me interessa.
então voce deve pegar periodos, ou seja intervalos em vez de usar = em sua query
Seria usando então BETWEEN?
pode ser com BETWEEN
Mário, consegui resolver desta forma:
SELECT * FROM filiados WHERE MONTH(cpdValidade) = MOD(MONTH(CURDATE()), 3) OR MONTH(cpdValidade) = MONTH(CURDATE()) + 2 OR MONTH(cpdValidade) = MONTH(CURDATE()) + 1 OR MONTH(cpdValidade) = MONTH(CURDATE())
Tem alguma problema em ser assim?
Pela query não entendi exatamente o quer mas se resolveu está ótimo
beleza então vlw...
só é para pegar se for exatamente o dia que falta para a data limite
tipo 1/1/2012 pegaria apenas em 1/10/2011 OU 1/11/2011 OU 1/12/2011 ?
Ou é para pegar em um intervalo?