【发布时间】:2020-07-22 13:22:11
【问题描述】:
我的数据库中有一个包含用户会话的表。有两列称为started_at 和ended_at。它们都包含时间戳。现在,我需要做的是计算一周中某一天的小时数。所以最终,我需要返回所有的课程,星期一进行了 350 小时,星期二进行了 250 小时,依此类推。
我尝试用下面的代码做到这一点。
$day = 0;
$dayTofetch = "mon";
$sessions = Session::whereRaw('WEEKDAY(sessions.started_at) = '.$dayTofetch)->get();
foreach($sessions as $session) {
$started_at_date = new DateTime($session->started_at);
$ended_at_date = new DateTime($session->ended_at);
$diff = $date2->diff($date1);
$day = $day + $diff->format('%h');
}
这行得通,但计算它需要相当多的时间。有没有更有效或更简单的方法来做到这一点?
【问题讨论】:
-
您平均返回多少条记录?
-
这个大概可以直接用SQL实现
-
@Spholt 几百。我会说平均大约 250 条记录。