¿Como mostrar registros según rango de fecha?

publicado por: Anonymous

Saludos de nuevo, se me ha presentado esta inquietud, quiero mostrar en una tabla los cursos dictados del día.

Los cursos que están siendo dictados los guardo con una fecha de inicio y una fecha final, estoy pensando en si puedo seleccionar de esos cursos los que estén siendo dictados hoy. Por ejemplo:

Curso PHP
Fecha inicio: 20-08-2017
Fecha Final: 20-08-2017

Esta es la tabla:

introducir la descripción de la imagen aquí

Que busque entre esos los rangos de fecha inicio y fin para asi ver si la fecha actual esta entre ese rango, y así mostrarlo como curso del día. No se si hay una manera de hacer eso. Gracias

Este es el código que estoy usando pero no me arroja nada:

<?php
$fechadesde = date('d-m-Y', mktime(0, 0, 0, date('d'), date('m'), 
date('Y')));
$fechahasta = date('d-m-Y', mktime(0, 0, 0, date('d') + 1, date('m'), 
date('Y')));

$query= "SELECT curso,inicio,final,horario FROM cursos WHERE inicio >= 
'".$fechadesde."' AND final < '".$fechahasta."' ";
$sql = $mysqli->query($query);
while($row = $sql-> fetch_assoc()){
 ?>
<tbody>
  <tr>
    <td><a href=""><?php echo $row['curso'] ?></a></td>
    <td><a href=""><?php echo $row['inicio'] ?></a></td>
    <td><a href=""><?php echo $row['final'] ?></a></td>
    <td><a href=""><?php echo $row['horario'] ?></a></td>
  </tr>
 </tbody>
 <?php } echo mysqli_error($mysqli); ?>
 </table>

solución

Creo que esto debiera resolver tu pregunta:

set @hoy = CURDATE();

select *
       from cursos_abiertos
       where STR_TO_DATE(inicio, '%d-%m-%Y')<= @hoy
             and STR_TO_DATE(fin, '%d-%m-%Y')>= @hoy;

El uso de la variable @hoy es simplemente para estar seguro que el valor en las dos comparaciones sea el mismo, pero eventualmente podrías utilizar BETWEEN para hacer más compacto el código:

select *
       from cursos_abiertos
       where CURDATE() between STR_TO_DATE(inicio, '%d-%m-%Y') and STR_TO_DATE(fin, '%d-%m-%Y');
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *