mysql - 获取第一个时间戳之间的所有行以及第一个和第二个之间的差异 - MySQL

标签 mysql sql

我需要获取用户两次登录之间的所有记录。

当我们检索第一次登录的行并获取第一个时间戳 (t1) 时,我们希望获取用户在此与第二个时间戳 (t2) 之间进行的所有点击。

我正在做的是:获取第一个时间戳(t1)并用用户的第二个时间戳(t2)减去它。然后,我将差值 (t2-t1) 与第一个时间戳相加,并运行查询以获取 t1 和 (t1+d) 之间的所有命中。

因此,我想做两件事:(获取第二个时间戳和差异)

第一个时间戳 (t1) 是:1507559316

            SELECT
              id, timestamp, (timestamp - 1507559316) as Difference
            FROM
              login_activity l 
            WHERE 
                l.uid=445 AND timestamp > 1507559316
            ORDER BY
                timestamp
                LIMIT 1

获取第一个时间戳和差异之间的所有行

t1 = 1507559316 差值 = 1226

          SELECT
              name, address, time
            FROM
              records r 
            WHERE 
                time BETWEEN FROM_UNIXTIME(1507559316) AND FROM_UNIXTIME(1507559316 + 1226)
            ORDER BY
                time

您认为这是解决这个问题的正确方法吗?

最佳答案

除非我严重误解了什么,否则你的方法不必要地复杂。您似乎有 AB,然后通过执行 A + (B - A) 重新计算 B >。这很神秘。

假设您的第一个时间戳位于 t1 中,您可以将第一个查询简化为

SELECT
  id, timestamp AS t2
FROM
  login_activity l 
WHERE 
  l.uid=445 AND t2 > t1
ORDER BY
  timestamp
LIMIT 1

以及您的第二个查询

SELECT
  name, address, time
FROM
  records r 
WHERE 
  time BETWEEN FROM_UNIXTIME(t1) AND FROM_UNIXTIME(t2)
ORDER BY
  time

无需将 t2 重新计算为 t1 + (t2 - t1),因此无需首先计算差异。

关于mysql - 获取第一个时间戳之间的所有行以及第一个和第二个之间的差异 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656598/

相关文章:

mysql - 如何制作一个简单的公交路线搜索引擎?

mysql - SQL:GROUP BY 子句中的所有属性都需要在 SELECT 子句中列出吗?

mysql - 将行恢复为默认列值 mysql

mysql - 为上个月的总和引入一个新列

php - 基于 MySQL 的 Web 应用程序 : Easiest way for users to choose order or items?

sql - 长期使用 Oracle 的用户切换到 MySQL,有什么需要注意的问题吗?

mysql - 如何从数据库中选择倒数第二行和最后一行?

mysql - 如何编写此 SQL 查询?

database-replication - mysql复制: remove consumed logs

sql - RODBC 包 : How to get a logical value for the "Does the Table Exists?" query type?