Consulta con fechas en MySQL y PHP

En ocasiones necesitamos hacer consultas o queries en MySQL con PHP usando fechas. Por ejemplo, consultar las ventas de hoy, o las ventas del mes.

También puede que necesitemos consultar con fechas en un rango, ya sea un año, de hoy, de unas horas, etcétera.

Por ello es que vengo a mostrar hoy cómo hacer consultas con fechas en MySQL usando date y strtotime.

Consultar con fechas en MySQL y PHP

Tomemos un ejemplo sencillo de ventas en donde tenemos una tabla de ventas que tiene la fecha y hora en la que la misma fue realizada. Al consultar todos los datos se ve así:

Ahora veremos cómo consultar con determinadas fechas. Veamos el ejemplo para consultar las ventas del día 6 de noviembre del 2019.

Usar PHP para las fechas

Lo único que necesitamos son dos fechas: la del inicio y la del fin. La de inicio la proporciona el usuario o nosotros tomamos la fecha de hoy con:

$fecha = date("Y-m-d") . " 00:00:00";

Así tenemos la fecha de medianoche del inicio. Algo como 2019-11-06 00:00:00

Ahora el “problema” radica en el día siguiente, pues debemos consultar todas las del día, sin pasarnos y sin que nos falte (incluso si una venta se hizo a las 23:59)

Para ello, usamos strtotime y obtenemos la fecha del siguiente día, así:

La magia para sumar fechas es usar strtotime y +1 day tomando como fecha para los cálculos la fecha de inicio.

Ahora que ya tenemos ambas fechas podemos hacer la consulta así (fíjate que primero es >= y después es <):

De modo que tome todas las fechas de hoy pero cuya fecha no sea mayor ni igual a mañana. Como las fechas se toman como cadena, el orden será respetado.

Con la siguiente salida:

Poniendo todo junto

Así que si usamos PDO con una conexión así:

La consulta quedaría algo así:

De esa manera evitamos inyecciones SQL y hacemos una consulta por fecha. Con este enfoque podríamos tomar meses, días, años, etcétera.

Deja un comentario

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