php - 计算与数据库的时间差

标签 php mysql

我有一张 table hsave_work_duration

`id_login`   `id_agent`   `agent_name`   `sys_time`              `status`

28               2         hsaveadmin     2014-05-26 12:13:12     Login

28               2         hsaveadmin     2014-05-26 12:19:12     Logout

我想计算用户登录和注销之间的时间差?

最佳答案

您可以在同一个表上使用 INNER JOIN 结合 TIMESTAMPDIFF 函数来完成此操作。

SELECT TIMESTAMPDIFF(MINUTE,s1.sys_time,s2.sys_time) AS timediff
FROM hsave_work_duration AS s1
INNER JOIN hsave_work_duration AS s2
ON 
    s1.id_login = s2.id_login AND
    s1.id_agent = s2.id_agent
WHERE agent_name = 'hsaveadmin';

如果您的状态不止这两种,请将以下内容添加到 WHERE 子句中:

AND s1.status = 'Login'
AND s2.status = 'Logout'

如果您想要时间差而不是分钟,请查看 this section in the MySQL Reference并更改 TIMESTAMPDIFF 函数中的第一个参数。

这可以使用 PHP 执行(即使用 mysqli 连接器):

$mysqli = new mysqli("localhost", "user", "password", "database");
$query = <the sql stmt>;
if ($result = $mysqli->query($query)) {
    $row = $result->fetch_assoc();
    print($row["timediff"]);
}
<小时/>

有关 SQL 的更多信息,请查看:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

关于php - 计算与数据库的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873907/

相关文章:

php - 我的网站在移动设备/较慢的计算机上滚动很糟糕

mysql - 我可以在同一个查询中计算两个不同的事物吗?

php - mysql SELECT distinct row from col1 WHERE col2=x

php - cakephp paginate - 按类别对记录进行排序(每个记录有不同的类别)

php - 使用 MySQL 和 PHP 显示用户信息

php - 在单个 Switch Case 中包含多个变量的 "And"

javascript - 我重新检查了语法,无法查看加载的页面中的 href 链接

php - htaccess 将别名重定向到主域

php - 将自定义 php 页面包含到 wordpress 而不会出现 404 错误

php - 如何使用带有 foreach 循环的 PHP 从三个数组创建一个表?