Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera!
Estou tentando fazer o seguinte:
Eu quero que a consulta do Mysql mostre somente os campos em que a data do "ultimo_laudo" seja 3 meses menor que a data atual.
Ainda não tenho muito conhecimento, então relevem =)
Estou tentando fazer assim:
$busca = "SELECT * FROM anuncios WHERE ultimo_laudo < CURRENT_DATE() -90";
Agradeço a atenção! o/Boa tarde Matheus,
Obrigado pela ajuda brother.
Assim, dessa primeira forma:
WHERE ultimo_laudo BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
Eu entendo que ele irá exibir os registros que tiverem a data "ultimo_laudo" dentro de um intervalo de 3 meses.
Porém, o que eu precisava era que ele exibisse os que estiverem com a data menor ou igual a 3 meses pra trás.
Entende? Não sei se estou me expressando corretamente.
Por exemplo, eu tenho um registro com data 30/08/2018 (à 3 meses atrás) ou ainda que a data fosse mais antiga. Preciso que esse seja exibido.
e outro registro com data 20/10/2018 por exemplo. Ainda não fez 3 meses de vencido, então esse não apareceria.
Ah sim, falha minha... dessa forma é bem mais simples.
Seria assim:
WHERE ultimo_laudo < '2018-08-03'
Ou, caso você não deseje pré-calcular a data:
WHERE ultimo_laudo < CURDATE() - INTERVAL 90 DAY
Olá Rafael, tudo bem?
Sua ideia foi boa, mas você não está mantendo uma unidade para se comunicar com o banco (no caso, dias).
O que eu quero dizer é que ultimo_laudo é um date (Y-m-d) provavelmente, daí você chama o CURRENT_DATE() que também vai retornar um date, e depois você coloca o -90 solto. A falha está nessa imprecisão.
Você poderia fazer assim (é apenas uma das várias formas de se fazer isso, pois existem muitas funções relacionadas a datas no Mysql):
WHERE ultimo_laudo BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
Veja: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
Mas eu particularmente prefiro sempre manter o máximo de lógica e processamento dentro da aplicação, nesse caso mandando diretamente a data calculada para dentro da consulta. Exemplo:
WHERE ultimo_laudo BETWEEN '2018-08-03' AND '2018-11-01'
Você não concorda que fica mais legível?
Não sei qual sua linguagem de programação, mas vou te dar um exemplo para fazer isso no PHP:
$sql .= sprintf(
" WHERE ultimo_laudo BETWEEN '%s' AND '%s'",