我有一个数据库,其中包含两个时间戳记(date_ticket_reported,date_ticket_resolved),我想计算每个时间的平均时差(由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”吗?
答案 0 :(得分:2)
您只能使用Myqsl运行一个查询:
template<class T, unsigned size>
constexpr auto flat_size (T (&arr)[size]) {
using E = std::remove_all_extents_t<T>;
return sizeof arr / sizeof (E);
}
template<class T, unsigned size, class BinOp = std::plus<>>
auto arr_accumulate_trivial(
T (&arr)[size], std::remove_all_extents_t<T> init = {}, BinOp op = {})
{
using E = std::remove_all_extents_t<T>;
static_assert(std::is_trivially_copyable_v<E>);
std::array<E, flat_size(arr)> flat;
std::memcpy(flat.data(), arr, sizeof arr);
return std::accumulate(std::begin(flat), std::end(flat), init, op);
}
这将返回每个用户的平均时差(以秒为单位)
答案 1 :(得分:0)
尝试
$resolved2 = $resolved1->resolved_date;
$reported2 = $reported1->ticket_date_reported;
$diff = $resolved2 - $reported;
然后回显$ diff并检查您在$ diff中得到了什么,