Filtrando por fecha
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
Publicar un comentario