Filtrando por fecha

Cuando realizamos consultas a la base de datos haciendo uso de Eloquent, generalmente hacemos uso de las “Where Clauses” para de manera sencilla obtener información según ciertos parámetros,  por lo que haremos uso de dicha característica del ORM para ejemplificar el post del día de hoy.


Ejemplos:

Supongamos que desea filtrar las entradas creadas hoy, o cualquier otro día, podemos hacer lo siguiente:

He visto gente haciéndolo con consultas sin procesar , como esta:

$q->where(DB::raw("DATE(created_at) = '".date('Ymd')."'"));

O sin consultas sin procesar por fecha y hora, así:

$q->where('created_at', '>=', date('Ymd').' 00:00:00'));

Afortunadamente, Laravel Query Builder ofrece una solución más elocuente :

$q->whereDate('created_at', '=', date('Ymd'));


En lugar de PHP date() puedes usar Carbon :

$q->whereDate('created_at', '=', Carbon::today()->toDateString());

La funcion tiene como operador por defecto «=», pero, como vimos en la función whereMonth, se puede cambiar por cualquier operador (‘=’, ‘<‘, ‘>’, ‘<=’, ‘>=’, ‘<>’, ‘!=’, ‘like’).

whereDate Sirve para consultar fechas especificas en la base de datos, se debe introducir la fecha con el formato YYYY-MM-DD (Año-Mes-Dia) de la siguiente manera:

 Movement::whereDate('created_at', '2021-01-17')->get();

No es solo whereDate . Hay cuatro funciones más útiles para filtrar fechas:

$q->whereDay('created_at', '=', date('d'));

$q->whereMonth('created_at', '=', date('m'));

$q->whereYear('created_at', '=', date('Y'));

$q->whereTime('created_at', '=', date('H:m:s'));

Para filtrar registros en Laravel en un rango de fechas, se puede utilizar el método whereBetween(), el cual permite establecer un rango de fechas para buscar registros. A continuación, te muestro un ejemplo de cómo filtrar registros en un rango de fechas:

Supongamos que tenemos una tabla "ventas" que tiene un campo "fecha" que almacena la fecha en que se realizó la venta. Queremos obtener todas las ventas que se realizaron entre el 1 de enero de 2022 y el 31 de enero de 2022. Para hacer esto, podemos utilizar el método whereBetween() de la clase DB de la siguiente manera:

<?php

$ventas = DB::table('ventas')

                ->whereBetween('fecha', ['2022-01-01', '2022-01-31'])

                ->get();

También podemos utilizar el mismo método en un modelo de Eloquent. Supongamos que tenemos un modelo "Venta" que representa la tabla "ventas". Podemos hacer lo siguiente:

<?php

$ventas = Venta::whereBetween('fecha', ['2022-01-01', '2022-01-31'])

                ->get();


Comentarios

Entradas populares de este blog

10 videojuegos gratis para aprender JavaScript en línea

reloj obs---datetime.lua