Laravel красноречивая группа по времени и дате каждые 10 мин. MySQL - PullRequest
0 голосов
/ 18 октября 2019

Я хочу запросить столбец и сгруппировать результаты по дате и времени, каждые 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...