显示从mySQL查询到网页的TIMEDIFF结果

时间:2015-01-22 00:45:29

标签: php mysql codeigniter

我再次,伙计们。这些标题非常明显,但细节如下: 我想在网页上显示timediff(以小时为单位)的结果,但我无法理解如何做到这一点。 我在这个网站上使用PHP和Codeigniter。 到目前为止,我有一个mySQL数据库,其中有一个名为'server_log'的表,如下所示:

+--------+-----------+--------+---------+------------+-------------+
| log_id | host_name | status | host_id | profile_id | event_date  |
+--------+-----------+-+----------------+------------+-------------+
|   1    | http://...| Online |   1     |      1     | *timestamp* |
+--------+-----------+--------+---------+--------------------------+

*它还显示状态为“离线”和“维护”的其他条目。

我有这个查询来获取每个用户的条目(基于profile_id)w / c也按状态排序('在线','离线'或'维护'):

SELECT * FROM server_log 
WHERE (profile_id=$id AND status='Online')
AND event_date BETWEEN $from_date AND $to_date
ORDER BY event_date,host_id;

* from_date和to_date是网页的结果,用户可以选择“发件人”和“收件人”日期来过滤结果,例如报表页面。 我遇到的问题是,在上面的查询后,我不知道我需要什么,以便计算每个服务器(host_id)的TIMEDIFF结果,然后在网页上显示它们。 (我想在获取每个状态的查询结果后获得结果之间的TIMEDIFF ) 如何获得TIMEDIFF结果(整数)?

简单地说,我希望流程是这样的:

[1] After 1st query: (SELECT ALL 'Online' for $id)

log_id | host_name  |  status   | host_id | profile_id | event_date
 1    ping.test1        Online      1          2            **
 2    ping.test1        Online      1          2            **
 3    ping.test2        Offline     2          2            **
 4    ping.test2        Offline     2          2            **

[2] After 2nd query: (loop for each host_id)

 log_id | host_name     |  status   | host_id | profile_id | event_date
   1      ping.test1        Online      1          2            **
   2      ping.test1        Online      1          2            **  

-> then calculate diff_date of event_dates

---> then return value to be assigned to $data['reports_ping']

-----> back to [1] but selecting all 'Offline', then 'Maintenance'

-------> if all values are assigned, display $data['reports_ping'] as row (foreach)

我希望结果显示如下:

    +------------+------------+------------+-------------+-------------+
    | profile_id | host_name  | online_hrs | offline_hrs | maintenance |
    +------------+------------+------------+-------------+-------------+
    |     1      | http://... |     2      |      1      |    0        |
    +------------+------------+------------+-------------+-------------+

我是一个相对初学者而且对CodeIgniter并不是那么好,所以对此的任何帮助都会非常感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

TIMEDIFF意味着event_date和现在之间的时间不同?试试这个:

SELECT *, (event_date - NOW()) as TIMEDIFF FROM server_log 
WHERE (profile_id=$id AND status='Online')
AND event_date BETWEEN $from_date AND $to_date
ORDER BY 'event_date','host_id';

- 编辑 -

这是你想要的逻辑吗?

$temp = null;
foreach($rows){
    $event_date = "select event_date from server_log order by log_id LIMIT 1"; // specify this query using your CI format
    $timediff = $event_date - $temp;
    $temp = $event_date;
}