Ir para conteúdo
Rafael Freitas

Verificar se a data de um determinado campo é menor que a data atual 3 meses

Recommended Posts

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/

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

<?php
$sql = 'SELECT BLA BLA BLA';// Início da instrução SQL, apenas para fins didáticos

$sql .= sprintf(
    " WHERE ultimo_laudo BETWEEN '%s' AND '%s'",
    ( new DateTime( '-90 days' ) )->format( 'Y-m-d' ),
    ( new DateTime( 'today' ) )->format( 'Y-m-d' )
);

echo $sql;
// Retorno: SELECT BLA BLA BLA WHERE ultimo_laudo BETWEEN '2018-08-03' AND '2018-11-01'

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por LauraGomes
      oi!
      Preciso fazer este calendário JavaScript pegar informações provenientes do banco de dados e destacar a data em que um evento acontecerá. sei que isso pode ser feito com ajuda do PHP, mas não tenho idéia de como fazer isso. Alguém pode me ajudar a fazer?
      <div class="calendar-wrapper"> <button id="btnPrev" type="button"> Anterior </button> <button id="btnNext" type="button"> Próximo </button> <div id="divCal"></div> </div> <script type="text/javascript"> var Cal = function(divId) { //guuardando o div id this.divId = divId; // Dias da semana, começando em Domingo this.DaysOfWeek = [ 'Dom', 'Seg', 'Ter', 'Qua', 'Qui', '---', 'Sab' ]; // Meses, começando em Janeiro this.Months = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ]; // Seleciona o mês e ano atual var d = new Date(); this.currMonth = d.getMonth(); this.currYear = d.getFullYear(); this.currDay = d.getDate(); }; // Vai para o próximo mês Cal.prototype.nextMonth = function() { if ( this.currMonth == 11 ) { this.currMonth = 0; this.currYear = this.currYear + 1; } else { this.currMonth = this.currMonth + 1; } this.showcurr(); }; // Vai para o mês anterior Cal.prototype.previousMonth = function() { if ( this.currMonth == 0 ) { this.currMonth = 11; this.currYear = this.currYear - 1; } else { this.currMonth = this.currMonth - 1; } this.showcurr(); }; // Mostra o mês atual Cal.prototype.showcurr = function() { this.showMonth(this.currYear, this.currMonth); }; // Mostra o mês (ano, mês) Cal.prototype.showMonth = function(y, m) { var d = new Date() // Primeiro dia da semana no mês selecionado , firstDayOfMonth = new Date(y, m, 1).getDay() // Ultimo dia do mês selecionado , lastDateOfMonth = new Date(y, m+1, 0).getDate() // Ultimo dia do mês anterior , lastDayOfLastMonth = m == 0 ? new Date(y-1, 11, 0).getDate() : new Date(y, m, 0).getDate(); var html = '<table>'; // Mostra o mês e o ano selecionados html += '<thead><tr>'; html += '<td colspan="7">' + this.Months[m] + ' ' + y + '</td>'; html += '</tr></thead>'; // "Header" dos dias da semana html += '<tr class="days">'; for(var i=0; i < this.DaysOfWeek.length;i++) { html += '<td>' + this.DaysOfWeek[i] + '</td>'; } html += '</tr>'; //Mostra os dias var i=1; do { var dow = new Date(y, m, i).getDay(); // Se for Domingo, começa nova linha if ( dow == 0 ) { html += '<tr>'; } // Se não for domingo o primeiro dia do mês // Vai aparecer os ultimos dias do mês anterior else if ( i == 1 ) { html += '<tr>'; var k = lastDayOfLastMonth - firstDayOfMonth+1; for(var j=0; j < firstDayOfMonth; j++) { html += '<td class="not-current">' + k + '</td>'; k++; } } // Mostra o dia atual no loop var chk = new Date(); var chkY = chk.getFullYear(); var chkM = chk.getMonth(); if (chkY == this.currYear && chkM == this.currMonth && i == this.currDay) { html += '<td class="today">' + i + '</td>'; } else { html += '<td class="normal">' + i + '</td>'; } // Se for sábado, a linha acaba //dow = days of week if ( dow == 6 ) { html += '</tr>'; } // Se não for sábado o ultimo dia do mês selecionado // vai aparecer os próximos dias a partir do próximo mês else if ( i == lastDateOfMonth ) { var k=1; for(dow; dow < 6; dow++) { html += '<td class="not-current">' + k + '</td>'; k++; } } i++; }while(i <= lastDateOfMonth); // fecha a tabela html += '</table>'; // Escreve em html para a div document.getElementById(this.divId).innerHTML = html; }; // Quando a pagina carregar window.onload = function() { // começa o calendario var c = new Cal("divCal"); c.showcurr(); // Ativa o click dos botões próximo e anterior getId('btnNext').onclick = function() { c.nextMonth(); }; getId('btnPrev').onclick = function() { c.previousMonth(); }; } // Get element by id function getId(id) { return document.getElementById(id); } </script>  
    • Por wilson c. antonio
      Eu recebo os dados via post, nome e cpf, mas minha consulta não retorna nenhum dado da tabela consultada.
      O que está errado?
      <?php include("../_conexao/funcoes.php"); $con=conectado(); #conferindo os dados recebidos via $_POST if(isset($_POST['btnLogin'])){ #addslashes(trim)remove as sobras de texto em branco dos campos $nome = addslashes(trim($_POST['nNome'])); $cpf = addslashes(trim($_POST['nCPF'])); } $sql=$con->prepare("SELECT * FROM bolsa WHERE bolsa.cpf = $cpf "); $sql->execute(); while($linha=$sql->fetch(PDO::FETCH_ASSOC)){ //paginação - somar quantidade de usuários $id_bolsa = $linha['id_bolsa']; $nome = $linha['nome']; $sobrenome = $linha['sobrenome']; $ddata = date('d/m/Y', strtotime($linha['dtprv'])); $nota = $linha['nota']; $acertos = $linha['acertos']; } ?> <input type="text" value="<?php echo $nota?>" readonly="true"/> <input type="text" value="<?php echo $cpf?>" readonly="true"/>  
    • Por Thiiiziiin
      Olá pessoal, como vão?
      Estou com o seguinte problema, tenho uma tabela em um banco de dados e estou pegando os valores para gerar gráficos, com a API Charts.js.
      Estou fazendo um gráfico dinâmico, em tempo real, porém, se eu insiro um dado no banco de dados, não consigo alterar no gráfico (é preciso dar refresh na página para alterar).
      Toda a conexão com o banco de dados está correta, pois se eu atualizo a página, o gráfico altera com os valores que defini.

      Eu fiz testes utilizando o math.random(), e funcionou, atualizava conforme os valores aleatórios gerados por essa função.
      Quando defino para ler do banco de dados, fica estático.
      Minha conclusão é que a variável de conexão do banco de dados não se altera em tempo real.

      Existe a possibilidade de atualizar a variável a cada segundo em PHP?
      Segue o código que estou fazendo:
       
      <?php include('conexao.php'); $select = $PDO->query("SELECT corrente FROM tbdados ORDER BY id DESC limit 1"); $select->execute(); $result = $select->fetch(); // retorno do banco de dados mysql_close($select); ?> // Abaixo é o javascript da API Charts.js modificada <script type="text/javascript"> var ctx = document.getElementById('myChart').getContext("2d"); var gradientStroke = ctx.createLinearGradient(0, 0, 0, 0); gradientStroke.addColorStop(0, '#FFC800'); var pointStroke = ctx.createLinearGradient(0, 0, 0, 0); pointStroke.addColorStop(0, '#3f3f3f'); var gradientFill = ctx.createLinearGradient(0, 250, 0, 50); gradientFill.addColorStop(0, "rgba(63, 63, 63, 0.7)"); gradientFill.addColorStop(1, "rgba(255, 182, 0, 1)"); var contador = 0; var corrente = <?php echo $result['corrente']; ?>; // variável que foi capturada do banco var segundos = 1000; <?php echo $rows; ?> var myChart = new Chart(ctx, { type: 'line', data: { labels: ["", "", "", "", "", "", "", "", "", "" ], datasets: [{ label: "Corrente (A)", borderColor: gradientStroke, pointBorderColor: gradientStroke, pointBackgroundColor: gradientStroke, pointHoverBackgroundColor: pointStroke, pointHoverBorderColor: gradientStroke, pointBorderWidth: 5, pointHoverRadius: 10, pointHoverBorderWidth: 1, pointHitRadius: 25, pointRadius: 3, fill: true, backgroundColor: gradientFill, borderWidth: 2, data: [, , , , , , , , , ,] }] }, options: { legend: { position: "bottom", labels: { fontColor: 'rgba(255,255,255,0.5)' } }, scales: { yAxes: [{ ticks: { fontColor: "rgba(255,255,255,0.5)", fontStyle: "bold", beginAtZero: true, maxTicksLimit: 10, padding: 20, }, gridLines: { drawTicks: false, display: false } }], xAxes: [{ gridLines: { zeroLineColor: "transparent" }, ticks: { padding: 20, fontColor: "rgba(255,255,255,0.5)", fontStyle: "bold" } }] } } }); function adddata(){ myChart.data.labels.push(contador + " segundos"); myChart.data.labels.splice(0, 1); myChart.data.datasets[0].data.splice(0, 1); console.log(myChart.data.datasets[0].data); myChart.data.datasets[0].data.push(corrente); myChart.update(); contador+=(segundos / 1000); } setInterval(function(){ adddata(); },segundos); var option = { showLines: true, scales: { yAxes: [{ display: true, ticks: { beginAtZero:true } }] } }; $(function() { setTime(); function setTime() { var date = new Date().getTime(); var string = "Corrente:<br/><span class='corrente_valor'>"+corrente+"</span><br/>Amperes"; setTimeout(setTime, segundos); $('#correnteCirculo').html(string); } }); </script>  
    • Por PedroTodorovski
      Quais a vantagens e as desvantagens de desenvolver um menu dinâmico (banco de dados) ao invés de um menu estático? Estou desenvolvendo um ecommerce e tenho essa dúvida.
    • Por brunobos21
      Olá, eu criei um formulario que salva os dados em um banco de dados mysql, e criei uma pagina de relatorio para mostrar todo mundo que se cadastra nesse banco, até ai tudo certo, só que eu tenho um campo "Status" que eu queria colocar um checkbox para o administrador poder marcar esse campo e mudar no mysql o valor do Status para 1 sempre que clicar no botão atualizar, e se o administrador desmarcar antes apertar o botão Atualizar, não mudar na tabela. Já pesquisei em tudo quer canto e não achei, se puderem me ajudar enviando algum modelo de código ou algum tópico aqui do forúm que ja fale sobre isso, agradeço. Aqui está meu código:
      <?php // definições de host, database, usuário e senha $host = "host"; $banco = "banco"; $user = "user"; $pass = "pass"; $tbl_name="tabela";   $nome = $_POST['nome']; $numero = $_POST['numero']; $email = $_POST['email']; $cidade = $_POST['cidade']; $whatsapp = $_POST['whatsapp']; $data = $_POST['data']; $status = $_POST['status'];   // conecta ao banco de dados $con = mysql_pconnect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR); // seleciona a base de dados em que vamos trabalhar mysql_select_db($banco, $con); // cria a instrução SQL que vai selecionar os dados $query = sprintf("SELECT * FROM Pesquisas"); // executa a query $dados = mysql_query($query, $con) or die(mysql_error()); // transforma os dados em um array $linha = mysql_fetch_assoc($dados); // calcula quantos dados retornaram $total = mysql_num_rows($dados); ?> <!DOCTYPE html> <html lang="en"> <head>     <title>Relatorio</title>     <meta charset="latin1_swedish_ci">     <meta name="viewport" content="width=device-width, initial-scale=1"> <!--===============================================================================================-->       <link rel="icon" type="image/png" href="images/icons/favicon2.ico"/> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/animate/animate.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="vendor/perfect-scrollbar/perfect-scrollbar.css"> <!--===============================================================================================-->     <link rel="stylesheet" type="text/css" href="css/util.css">     <link rel="stylesheet" type="text/css" href="css/main.css"> <!--===============================================================================================--> <script src="vendor/jquery/jquery-3.2.1.min.js"></script> <script type="text/javascript"> //--> </script> </head> <body> <form action=" " method="post">     <div class="limiter">         <div class="container-table100">             <div class="wrap-table100">                 <div class="table100">                     <table>                         <thead>                             <tr class="table100-head">                                 <th class="column1">Nome</th>                                 <th class="column2">Numero</th>                                 <th class="column3">Cidade</th>                                 <th class="column4">E-mail</th>                                 <th class="column5">Whatsapp</th>                                 <th class="column6">Tipo</th>                                 <th class="column6">Data</th>                                 <th class="column6">Status</th>                             </tr>                         </thead>                           <?php                         // se o número de resultados for maior que zero, mostra os dados                         if($total > 0) {                     // inicia o loop que vai mostrar todos os dados                     do {                         ?>                         <tbody>                                 <tr>                                     <td class="column1"><?=$linha['nome']?></td>                                     <td class="column2"><?=$linha['numero']?></td>                                     <td class="column3"><?=$linha['cidade']?></td>                                     <td class="column4"><?=$linha['email']?></td>                                     <td class="column5"><?=$linha['whatsapp']?></td>                                     <td class="column6"><?=$linha['tipo']?></td>                                     <td class="column6"><?=$linha['data']?></td>                                     <td class="column6">                                     <input type=checkbox name="banco[]" value="1"><?=$linha['status']?>                                     </td>                                 </tr>                                </tbody>                         <?php                     // finaliza o loop que vai mostrar os dados                     }while($linha = mysql_fetch_assoc($dados));                         // fim do if                         }                         ?>                     </table>                     <div class="container-contact2-form-btn">                                 <div class="wrap-contact2-form-btn">                                     <div class="contact3-form-bgbtn"></div>                                     <button class="contact2-form-btn" type="submit" value="Enviar" name="enviar">                                         Atualizar                                     </button>                                 </div>                             </div>                 </div>             </div>         </div>     </div> </form>   <!--===============================================================================================-->       <script src="vendor/jquery/jquery-3.2.1.min.js"></script> <!--===============================================================================================-->     <script src="vendor/bootstrap/js/popper.js"></script>     <script src="vendor/bootstrap/js/bootstrap.min.js"></script> <!--===============================================================================================-->     <script src="vendor/select2/select2.min.js"></script> <!--===============================================================================================-->     <script src="js/main.js"></script> </body> </html> <?php // tira o resultado da busca da memória mysql_free_result($dados); ?>
×

Informação importante

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