- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 MySQL 查询有一个小问题:
表格是这样的
id timedate user action
1 2010-01-01 10:01:01 AB991 login
2 2010-01-01 12:01:01 AB991 logout
3 2010-01-01 14:01:01 AB991 login
4 2010-01-01 18:01:01 AB991 logout
5 2010-01-01 10:01:01 ZM991 login
6 2010-01-01 10:01:01 ZM991 logout
7 2010-01-02 10:01:01 AB991 login
8 2010-01-02 18:01:01 AB991 logout
9 2010-01-02 10:01:01 ZM991 login
现在,我需要一个查询或一些 PHP 代码来每天计算每个用户登录和注销之间的分钟差。但可能会出现一些问题,例如:
有聪明的解决方案(也许只有MySQL)或者我必须使用PHP并制作代码墙?
最佳答案
可能的解决方案如下:
select id, timedate, action
from mytable
where user = 'AB991'
order by timedate
您的 PHP 代码将获得按日期排序的列表。该算法应如下所示:
$user = 'AB991';
$stmt = $db->prepare("select id, timedate, action from mytable where user = ? order by timedate");
$stmt->execute(array($user));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$previousTime = "";
foreach ($rows as $row) {
if ($row["action"] === "login") {
$previousTime = strtotime($row["timedate"]);
} else if ($row["action"] === "logout") {
if ($previousTime === "") {
//duplicate logout
} else {
//add the remaining time to the day when the user logged in
//add the whole days passed between log in and log out
//add the start of the last day when the user logged in
$previousTime = "";
}
}
}
问题:
建议:我会修改表格以包含 session ID 和最后一个操作。当用户执行操作时,最后一个操作的时间戳将会更新,因此您将拥有基于 session 的数据,其中每一行都会说明自己,显示登录时间和最后一个操作时间。
关于php - 带有子句的 TIMESTAMPDIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995898/
我正在向 TIMESTAMPDIFF(HOUR,'29-10-2012','19-11-2012') 提供输入,但我得到的输出为 504 但值应为 510。 输出为 510,因为起始值为 29/10/
你有没有可能以分钟为单位计算总和,而不是在某个特定时间之间,比如 2300 到 0700 之间 SELECT SUM( TIMESTAMPDIFF(MINUTE, open_time, close_t
这是一个简单的查询,用于检索用户上次在线的分钟数、小时数或天数。小时和天的计算是正确的。但是几分钟后,以下返回正确的值但为负值,例如-4分钟、-6分钟、-10分钟时应为正值。 select usern
我的 MySQL 查询有一个小问题: 表格是这样的 id timedate user action 1 2010-01-01 10:01:01 AB991 login 2
我有以下表结构: +----+---------------------+---------------------+ | id | created_at | closed
我真的很困惑。无论我将最后一个子句改为,下面的语句都会返回相同的结果 TIMESTAMPDIFF( SECOND , `Regkey`.`expires` , NOW( ) ) > 0 TI
是的,之前已经问过非常类似的问题,但请耐心等待。 现在,人们提出了许多函数来根据出生日期确定准确的年龄,同时考虑闰年等因素。然而MySQL documentation提供了一个非常简单的解决方案: S
我有这个查询来向我展示付款之间的平均时间差异 SELECT TIMESTAMPDIFF(SECOND, MIN(x.ts), MAX(x.ts) )/(COUNT(DISTINCT(x.ts)) -1
我有一个学生数据库,其中有注册日期列。我需要在 sql 上运行一个查询,查找该日期和今天的日期,并显示 yy 年 mm 月的差异。 我正在使用 TIMESTAMPDIFF 来计算这些日期之间的差异,但
为什么 TIMESTAMPDIFF(MONTH, '2015-12-25', '2016-02-24') 给我1?我希望 2016-01-25 为 1。 我的猜测是,它实际上返回了大约 1.999 个
我在sql fiddle上使用mysql版本5.6,并且我尝试使用timestampdiff()函数来查找名为Task的表中第一列中的最小值和第二列中的最大值之间的差异正在关注 select Time
我正在尝试在我的一个查询中使用 TIMESTAMPDIFF 函数,这让我很头疼。 表格 id | web_address | timeperiod | timeperiod_exp 1
简单的问题 更改输出以使其仅显示最后两位小数的最佳方法是什么? SELECT AVG(TIMESTAMPDIFF(hour, start_it,start_qa) 这样“13.2500”的输出将显示为
我可以使用以下方法获取从数据库时间到 UTC (0) 的时区偏移量: SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW()); 我如何获得从 UTC 到特
我的查询有问题,即使我现在发布帖子,TIMESTAMPDIFF不适用于 MINUTE 。但是,如果我输入 DAY 或 MONTH,它会起作用,我真的无法弄清楚可能是什么问题。我有比秒更新的帖子。请提供
SELECT M.strMemID AS 'Member ID', M.strMemLastname
我正在使用以下语法 TIMESTAMPDIFF(2, CHAR(CREATED - TIMESTAMP('1970-01-01 00:00:00')) 哪里CREATED类型为 TIMESTAMP数据
我的 SQL 查询仅在答案方面是正确的,但在格式方面却失败了。例如,小时和分钟的转换值为 4 小时 30 分钟...如果我将它与“:”(冒号是小时和分钟的正常分隔符)连接起来,它只会显示为“43”而不
我的恒温器有一张 table 。它记录数据如下。所以当它打开时,我得到一个时间状态,状态 1 表示打开,状态 0 表示加热关闭。此外,每次开/关时,它都会为我提供每天的总供暖量。 Date
我正在使用 14.4 版本的 mysql,我正在尝试执行以下查询: SELECT TIMESTAMPDIFF(MINUTE, MINUTE(NOW()), NOW()) 这应该返回当前小时的时间戳,但
我是一名优秀的程序员,十分优秀!