Расчет разницы во времени между двумя значениями в дБ для нескольких строк - PullRequest
1 голос
/ 26 марта 2019

У меня есть база данных, которая содержит две метки времени (date_ticket_reported, date_ticket_resolved), я хочу вычислить среднюю разницу во времени между этими временами для каждого resolved_by user_id.

В каждой строке есть столбец (resolved_by), который соответствуетa 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.

Любая помощь была бы потрясающей!

Я попытался ответить Малхази Дарцмелидзе,

$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"?

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Вы можете выполнить только один запрос с Myqsl:

SELECT 
    AVG(TIMESTAMPDIFF(SECOND, resolved_date, ticket_date_reported)) as timediff,
    resolved_by as user
FROM tickets 
GROUP BY resolved_by

Это возвращает среднюю разницу во времени в секундах для каждого пользователя

0 голосов
/ 26 марта 2019

Попробуйте это

 $resolved2 = $resolved1->resolved_date;
 $reported2 = $reported1->ticket_date_reported;

 $diff = $resolved2 - $reported;

А затем введите $ diff и проверьте, что вы получаете в $ diff,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...