Я хочу запросить столбец и сгруппировать результаты по дате и времени, каждые 10 минут.
Пример:
2019-10-18 15:00 : 10
2019-10-18 15:10 : 3
2019-10-18 15:20 : 4
2019-10-18 15:30 : 1
2019-10-18 15:30 : 32
В настоящее время я могу группировать по дате или даже по дате и времени с этим:
$adminActivities = Activity::whereBetween('created_at', [date('Y-m-d 00:00:00'), date("Y-m-d H:i:s")])
->where('user_id', $data->admin_id)->get()
->groupBy(function($date) {
return Carbon::parse($date->date)->format('Y-m-d');
});
У меня есть рабочий пример в сыром SQL в другой функции, но я хотел бы знать, как это сделать в красноречивом :
$result = DB::connection('mysql_live')->select('SELECT male,female,date_added
FROM online_user WHERE date_added BETWEEN DATE_SUB(NOW(), INTERVAL 15 DAY) AND NOW()
GROUP BY ROUND(UNIX_TIMESTAMP(date_added) / 600)');
РЕДАКТИРОВАТЬ
В настоящее время я пытаюсь это сделать, но пока нет результатов:
$adminActivities = Activity::whereBetween('created_at', [$data->from_date, $data->to_date])->where('user_id', $data->admin_id)
->selectRaw('activity, created_at')
->whereRaw('created_at between DATE_SUB(DATE(' . $data->from_date . '), INTERVAL 10 MINUTE) and DATE(' . $data->to_date .')')
->get();
from_date
и to_date
имеют этот формат: Y-m-d H:i:s
РЕДАКТИРОВАТЬ
Кажется, DATE()
просто извлекает дату, я заменяю ее на TIMESTAMP()