使用timestampdiff并获取特定用户的先前日志

Car*_*doc 6 mysql vb.net

我想区分日期时间为1的日期时间now()和日期时间2是特定用户的上一个日志之间的区别.

我正在寻找这样的东西

TIMESTAMPDIFF(NOW(), Previous_Log_of_User)
Run Code Online (Sandbox Code Playgroud)

所以,如果我有2个用户,我有这个teller_log

名称时间戳操作持续时间

user1 2015-09-09 15:00:40登录00:00:00

user1 2015-09-09 15:00:45增量00:00:05

user1 2015-09-09 15:00:52增量00:00:07

user2 2015-09-09 15:00:52登录00:00:00

user1 2015-09-09 15:00:55` increment 00:00:03

user2 2015-09-09 15:00:58`增量00:00:06

user1 2015-09-09 15:01:00` logout 00:00:02

user2 2015-09-09 15:01:00` logout 00:00:02

正如您在上面的示例中所看到的,我有2个用户,起点是如果用户logs in,如果用户操作增加,我将计算时间loginincrement操作之间的时间,然后如果用户操作再次递增,我们现在将计算之前的增量和现在的增量之间的持续时间,依此类推,直到用户注销,这将标记结束.

我在这里遇到的问题之一是因为表不一致,我不能单独依赖user_id来获取特定用户的先前日志.有些情况下user1的先前id是user2的id.

题:

除了使用时差之外,还有一种简单的方法吗?或者我可以采取的任何其他方法?我在这里度过了充足的时间.

编辑:

我正在使用MySQLVB.NET.

我的数据库是这样的

在此输入图像描述

在这里我们的重点是在teller_log其记录的任何动作表teller_info,这个teller_info表中获取该用户的名义user_info借助表teller_id无论是在现场user_infoteller_info.

然后,我们可以创建自合并信息的日志user_info,并teller_info借助user_id现场user_info表.

我想要实现的

  1. 通过此查询,我可以轻松获得所有日志的持续时间.(用于检查目的)这意味着查询不应该有WHERE,但不确定?
  2. 我想根据时间获取最新日志的持续时间,这意味着如果user1递增,那么它将创建一个日志,并在该日志中我将指定持续时间.

Ric*_*mes 2

只是为了user1

SELECT TIMESTAMPDIFF(HOUR, MAX(timestamp), NOW()) AS "Hours since last action"
    FROM tbl
    WHERE name = 'user1';
Run Code Online (Sandbox Code Playgroud)

每个用户执行某操作后的分钟数:

SELECT  name,
        TIMESTAMPDIFF(MINUTE, MAX(timestamp), NOW()) AS "Minutes since last action"
    FROM tbl
    GROUP BY name;
Run Code Online (Sandbox Code Playgroud)

如果您想知道最后发生了什么操作,那就变得更加复杂。