Edilson Santiago Postado Agosto 31, 2022 Denunciar Share Postado Agosto 31, 2022 Olá, amigos. Pergunta de principiante, mas to quebrando a cabeça. Preciso listar todas os registros cuja idade hoje seja menor que 9 anos. Fiz assim: <?php $dataatual = date('Y-m-d'); $menos9anos= date('Y-m-d',strtotime('-3286 days')); $criancas = "SELECT * FROM CadPessoas WHERE DtNasc BETWEEN $menos9anos AND $dataatual"; ?> <html> <head></head> <body> <table> <thead> <tr bgcolor=#0404b8> <td align=center ><b>ID </b></td> <td align=center ><b>NOME</b></td> <td align=center ><b>CELULAR</b></td> <td align=center ><b>DT.NASC.</b></td> <td align=center ><b>STATUS</b></td> <td align=center ><b>AÇÃO</b></td> </tr> </thead> <tbody bgcolor=#3232e3> <?php $dsn = ("mysql:host=localhost;dbname=meubanco;charset=utf8"); $user = "meuusuario"; $pass = "minhasenha"; $pdo = new PDO($dsn,$user,$pass); $stm = $pdo->query($criancas); $rows = $stm->fetchAll(); $count = count($rows); ?> <div style="color:#ffffff; font-size:20px;" align="right" text-color="red"><b>Total de registros encontrados: <?php echo $count;?> </b></div> <?php foreach($rows as $row){ echo "<tr>"; echo ("<td align=center>{$row['Cod']}</td>"); echo ("<td>{$row['Nome']}</td>"); echo ("<td>{$row['Cel']}</td>"); ?> <td align=center><?php echo ( date('d/m/Y', strtotime($row['DtNasc'])) ); ?></td> <td align=center><?php echo $row['Status']; ?></td> <td align=center><a href="pessoa_completo.php?<?php echo $row['Cod']?>"><img src="../img/more.png" alt="Imagem" height="39" width="100" /> </td> <?php } ?> </tbody> </table><br> </body> </html> Mas ele está retornando pessoas com idade maior, por exemplo, nascidas em 1986. Deveria retornar só de 2013 pra cá. Detalhe: todas as datas do campo DtNasc do banco de dados estão salvas no formato 1998-12-04 00:00:00. Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Edilson Santiago Postado Agosto 31, 2022 Autor Denunciar Share Postado Agosto 31, 2022 Consegui resolver. É sempre o detalhe mais simples. Eu tinha esquecido das 'aspas' simples nas variáveis: $criancas = "SELECT * FROM CadPessoas WHERE DtNasc BETWEEN '$menos9anos' AND '$dataatual'"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Agosto 31, 2022 Denunciar Share Postado Agosto 31, 2022 Comigo deu tudo certo, só precisei colocar aspas na consulta $criancas = "SELECT * FROM tbpessoa WHERE DtNasc BETWEEN '$menos9anos' AND '$dataatual'"; Veja também o MySQL e confira se DtNasc foi configurado como DATETIME. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Edilson Santiago
Olá, amigos. Pergunta de principiante, mas to quebrando a cabeça. Preciso listar todas os registros cuja idade hoje seja menor que 9 anos.
Fiz assim:
Mas ele está retornando pessoas com idade maior, por exemplo, nascidas em 1986. Deveria retornar só de 2013 pra cá.
Detalhe: todas as datas do campo DtNasc do banco de dados estão salvas no formato 1998-12-04 00:00:00.
Abraços
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.