mysql - query - where like laravel
Consigue solo los registros creados hoy en laravel. (6)
Puede usar whereRaw(''date(created_at) = curdate()'') si la zona horaria no es una preocupación o whereRaw(''date(created_at) = ?'', [Carbon::now()->format(''Ym-d'')] ) contrario.
Dado que el campo created_at es una marca de tiempo, debe obtener solo la parte de la fecha e ignorar la parte de la hora.
¿Cómo uso el campo created_at para obtener solo los registros que se crearon hoy y no otro día u hora?
Estaba pensando en un ->where(''created_at'', ''>='', Carbon::now()) Pero no estoy seguro de que funcione.
Si está utilizando Carbon (y debería, ¡es increíble!) Con Laravel, simplemente puede hacer lo siguiente:
->where(''created_at'', ''>='', Carbon::today())
Además de now() y today() , también puede usar yesterday() y tomorrow() y luego usar lo siguiente:
-
startOfDay()/endOfDay() -
startOfWeek()/endOfWeek() -
startOfMonth()/endOfMonth() -
startOfYear()/endOfYear() -
startOfDecade()/endOfDecade() -
startOfCentury()/endOfCentury()
Utilice la función CURDATE predeterminada de Mysql para obtener todos los registros del día.
$records = DB::table(''users'')->select(DB::raw(''*''))
->whereRaw(''Date(created_at) = CURDATE()'')->get();
dd($record);
Nota y actualización para 5.6
La diferencia entre Carbon::now vs Carbon::today is just time.
p.ej
Fecha impresa a través de Carbon::now se verá como algo:
2018-06-26 07:39:10.804786 UTC (+00:00)
Mientras que con Carbon::today :
2018-06-26 00:00:00.0 UTC (+00:00)
Para obtener los únicos registros creados hoy con now se pueden buscar como:
Post::whereDate(''created_at'', Carbon::now()->format(''m/d/Y''))->get();
mientras today con:
Post::whereDate(''created_at'', Carbon::today())->get();
ACTUALIZAR
A partir de la laravel 5.3, tenemos por defecto la cláusula whereDate / whereMonth / whereDay / whereYear
$users = User::whereDate(''created_at'', DB::raw(''CURDATE()''))->get();
O con fachada DB
$users = DB::table(''users'')->whereDate(''created_at'', DB::raw(''CURDATE()''))->get();
El uso de los anteriores enumerados donde las cláusulas
$users = User::whereMonth(''created_at'', date(''m''))->get();
//or you could also just use $carbon = /Carbon/Carbon::now(); $carbon->month;
//select * from `users` where month(`created_at`) = "04"
$users = User::whereDay(''created_at'', date(''d''))->get();
//or you could also just use $carbon = /Carbon/Carbon::now(); $carbon->day;
//select * from `users` where day(`created_at`) = "03"
$users = User::whereYear(''created_at'', date(''Y''))->get();
//or you could also just use $carbon = /Carbon/Carbon::now(); $carbon->year;
//select * from `users` where year(`created_at`) = "2017"
con carbono
return $model->where(''created_at'', ''>='', /Carbon::today()->toDateString());
sin carbono
return $model->where(''created_at'', ''>='', date(''Y-m-d'').'' 00:00:00'');
para los usuarios de Laravel 5.6, simplemente puede hacer
$posts = Post::whereDate(''created_at'', Carbon::today())->get();
Feliz codificacion
$today = Carbon/Carbon::now()->format(''Y-m-d'').''%'';
->where(''created_at'', ''like'', $today);
Espero que te ayude