Programación en PHP, Javascript, Java, Python

Selección de datos entre fechas – MySQL Tips

MySQLUna de las consultas mas frecuentes que solemos realizar es la de devolver datos entre fechas. La manera mas sencilla de realizar es utilizar el operador de comparación ‘BETWEEN’. Por ejemplo si queremos ver los datos entre dos fechas lo haremos de la siguiente manera. En este ejemplo la fecha mas baja es ‘fechaMin’ y la alta ‘fechaMax’, y hay que tener en cuenta que todos los argumentos tienen que ser del mismo tipo.


SELECT * FROM `miTabla` WHERE `miCampoFecha` BETWEEN 'fechaMin'  AND 'fechaMax';

Si el valor de `micampoFecha` es mayor o igual que ‘fechaMin’ y menor o igual que ‘fechaMax’  ‘BETWEEN’ devolvera 1 si no devolvera 0. Esto es lo mismo que hacer lo siguiente.


SELECT * FROM `miTabla` WHERE ('fechaMin' <= `miCampoFecha` AND `miCampoFecha` <= 'fechaMax')

Si lo que queremos es mostrar las fechas que no esten comprendidas dentro de este rango añadiremos ‘NOT’  delante de ‘BETWEEN’


SELECT * FROM `miTabla` WHERE `miCampoFecha` NOT BETWEEN 'fechaMin'  AND 'fechaMax';

Para mas información acerca de los operadores de comparación en MySQL hacer clic aquí

Anuncio publicitario

6 comentarios en “Selección de datos entre fechas – MySQL Tips”

  1. ¿Y qué pasa si queremos que las fechas sean, hoy y el mes siguiente?

    Es decir, buscar los datos de acontecimientos que ocurrirán en los próximos 30 días.

    PD: gracias por la explicación del uso de estas funciones, me he aclardado mucho.

    1. En ese caso no usas BETWEEN sino que usas la función DATE_SUB para restar días o semanas o meses o años a una fecha y DATE_ADD para sumar días o semanas o meses, así que si digo que WHERE DATE(miCampoFechaOfechaHora) >= DATE_ADD(miCampoFechaOfechaHora, INTERVAL 1 month)

  2. hola gracias por el post, mi duda si tienes 2 campos fecha en la tabla, uno llamado fechaini y el otro fechafin, como harías para hacer una consulta que te devuelva un valor que si esta entre esos campos te devuelva el registro relacionado.

  3. Buenas tardes, como se haría si quisiera hacer algo como esto en un stored procedure:

    CREATE DEFINER=`root`@`localhost` PROCEDURE `proc`(
    in pfecha date,
    in pfecha2 date
    )
    BEGIN
    select
    fecha,
    descripcion,
    pagado
    from
    fac_enc fe
    join cliente c
    using(id_cliente)
    where
    if(pfecha»,fecha between pfecha and pfecha2,true);
    END

    Es decir, si quisiera que cuando edite las fechas haga la consulta entre las fechas de inicio y fin, pero si no la consulto que la fecha no sea un impedimento y me muestre todos los registros.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s