doucan8049
2019-05-22 09:55
采纳率: 100%
浏览 797
已采纳

总结一个月的时间戳差异

想要汇总一个用户的每日工作时间并且在一个专栏我是有登记和检测的时间

$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条回答 默认 最新

  • dragam0217 2019-05-22 10:00
    已采纳

    你可以使用

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

    来获得总工作时间。

    运行 演示.

    已采纳该答案
    打赏 评论
  • douqian4411 2019-05-22 10:08

    如果你想用查询来做,就使用 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";
    

    但是它会在每个组后面添加额外的行,来显示它们的总和,并在结果集的底部显示总的和。

    打赏 评论

相关推荐 更多相似问题