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