php - 计算多行的两个 db 值之间的时间差
问题描述
我有一个包含两个时间戳(date_ticket_reported、date_ticket_resolved)的数据库,我想计算每个resolved_by user_id 的这些时间之间的平均时间差。
每行都有一个对应于 user_id 的 (resolved_by) 列。
对于每个 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
这将返回每个用户的平均时间差(以秒为单位)
推荐阅读
- r - 在R中使用for循环构建时如何引用列中的先前条目?
- azure - 尝试在管道中使用 Azure Key Vault 任务时出错。未找到包裹
- r - 在 Rniftyreg 中成功使用 applyTransform()
- node.js - 尽管 npm install,Gatsby 还是找不到 fs
- c# - 为什么当我尝试从 TinyMCE 保存文本时模型无效
- javascript - 谷歌饼图“无数据”如何从 php 输出 json 获取数据
- ios - 正确使用/构建 IOS 框架的问题
- python - flask 和 flask-wtf - 先前提交的表单出错
- java - Java - 是否可以在字符变量中存储像点这样的元字符?
- android - MotionLayout 结合 NavHostFragment