我有一个包含两个时间戳(date_ticket_reported、date_ticket_resolved)的数据库,我想为每个 resolved_by user_id 计算这些时间之间的平均时间差。
每一行都有一个 (resolved_by) 列,它对应于一个 user_id。
对于每个 user_id,会有多行。
我尝试了各种方法,包括以下方法。
ticket_model.php code
public function get_resolved_time_by_user($user_id){
$query1 = $this->db->select('resolved_date')->from('tickets')->where('resolved_by',$user_id)->get();
$resolved1 = $query1->row();
$query2 = $this->db->select('ticket_date_reported')->from('tickets')->where('resolved_by',$user_id)->get();
$reported1 = $query2->row();
$resolved2 = $resolved1->resolved_date;
$reported2 = $reported1->ticket_date_reported;
foreach($resolved2 as $row){
//Convert them to timestamps
$reported_dateTimestamp = strtotime($resolved2);
$resolved_dateTimestamp = strtotime($reported2);
$diff = $resolved_dateTimestamp - $reported_dateTimestamp;
return $diff;
}
}
工单查看代码
<p> Average Resolve Times <?php echo $this->ticket_model->get_resolved_time_by_user($user_id); ?> </p>
总结一下;我想显示 date_ticket_reported、date_ticket_resolved 之间的平均时间。对于指定的每个 user_id。
任何帮助都会很棒!
我试过 Malkhazi Dartsmelidze 的回答,
$this->db->query("SELECT
AVG(TIMESTAMPDIFF(SECOND, resolved_date, ticket_date_reported)) as timediff,
resolved_by as user
FROM tickets
GROUP BY resolved_by");
我收到一条错误消息,指出类 CI_DB_mysqli_result 的对象无法转换为字符串
你在哪里说 resolved_by 作为用户。 “用户”应该是 user_id 吗?即它应该说“resolved_by as user_id”吗?
最佳答案
您只能使用 Myqsl 运行一个查询:
SELECT
AVG(TIMESTAMPDIFF(SECOND, resolved_date, ticket_date_reported)) as timediff,
resolved_by as user
FROM tickets
GROUP BY resolved_by
这将返回每个用户的平均时间差(以秒为单位)
关于php - 计算多行的两个数据库值之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55359447/