суммировать разницу временных меток за месяц - PullRequest
0 голосов
/ 22 мая 2019

хочу суммировать ежедневные рабочие часы пользователя, и у меня есть время для регистрации и проверки в столбце времени

$sql=" SELECT User_id, date, min(time) AS checkedin, max(time) AS checkedout,( (TIME_TO_SEC(TIMEDIFF(max(time), min(time))) / 60) / 60) difference
            FROM profile WHERE 1 GROUP BY User_id, date";
            $previousdata = DB::select($sql);

Я получаю этот массив из запроса SQL, который я использовал, и я хочудобавить разницу, которую я получаю каждый день для данных за месяц.не беспокойтесь о формате даты, я из Непала и использую непальскую дату.

Array
(
    [0] => stdClass Object
        (
            [User_id] => 1
            [date] => 2076-02-06
            [checkedin] => 12:11:40
            [checkedout] => 19:11:43
            [difference] => 7.00083333
        )

    [1] => stdClass Object
        (
            [User_id] => 1
            [date] => 2076-02-08
            [checkedin] => 12:15:40
            [checkedout] => 15:15:48
            [difference] => 3.00222222
        )

)

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Если вы хотите сделать это с запросом, тогда используйте rollup

SELECT User_id, date, min(time) AS checkedin, max(time) AS checkedout,( (TIME_TO_SEC(TIMEDIFF(max(time), min(time))) / 60) / 60) difference
FROM profile WHERE 1 GROUP BY User_id, date WITH ROLLUP";

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

0 голосов
/ 22 мая 2019

Вы можете использовать

array_sum(array_column($arr,'difference'));

Чтобы получить общее количество рабочих часов.

работает демо .

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