Seleccionar registros entre dos fechas con MySQL

Desde que empecé a trabajar con bases de datos y con programación en PHP algo a lo que siempre he tenido mucha tirria es al manejar de fechas. Con el paso del tiempo lógicamente te vas adaptando y lo que antes te costaba medio siglo ahora lo haces en un pis-pas.

Registros entre dos fechas con MySQL

En el artículo de hoy os voy a enseñar algo bastante simple pero muy útil para por ejemplo, sacar estadísticas de registros de usuarios o de ingresos de una plataforma online. Vamos a plantearnos que queremos sacar el número de usuarios registrados entre el 20 de Marzo de 2016 y el 31 de Mayo de 2016 y para ello vamos a hacer uso de la sentencia BETWEEN de MySQL:

SELECT * FROM `usuarios` WHERE fecha BETWEEN '2016-03-20' AND '2016-20-31'

Si os fijáis la consulta es bastante sencilla y lo único que tendrías que reemplazar es el nombre de la tabla y el campo donde guardamos la fecha (que podría ser reg_date, fecha_registro,etc) , además de las fechas entre las que queráis consultar siempre en el formato YYYY-MM-DD donde YYYY es el año MM el mes y DD el día.

Si quisiéramos sacar los registros de usuarios entre dos horas del día determinadas (si el campo fecha fuera un DATETIME lógicamente) solo tendríamos que modificar la consulta por:

SELECT * FROM `usuarios` WHERE fecha BETWEEN '2016-03-20 15:00:00' AND '2016-03-20 18:00:00'

La sentencia BETWEEN no solo es aplicable a fechas si no que la podréis aplicar a otro tipo de rangos por ejemplo entre dos números.

Espero que os sirva este pequeño tip el cual es bastante útil.

7 comentarios en “Seleccionar registros entre dos fechas con MySQL”

  1. José María Muñoz Polonio

    Hola:

    ¿Por qué no me funciona lo siguiente?

    $buscar = «SELECT * FROM `movies` WHERE `year` BETWEEN ‘$nom1’ AND ‘$nom2′»;

    Es una base de datos de películas y quiero que en el buscador te busque los títulos que hay entre los años $nom1 y $nom2 (seleccionados por el usuario).

    Gracias

  2. Hola Juan gracias por la explicación. En mi caso estoy intentando obtener resultados del número de veces que un usuario accede a una información por día dentro de un intervalo de fechas, por ejemplo:

    Intervalo: Desde 20200404 Hasta 20200406

    Fecha | accesos
    20200404 | 7
    20200405 | 10
    20200406 | 7

    Para luego acceder a cada registro y mostrar un gráfico con información de accesos por dia.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *