我需要获取用户两次登录之间的所有记录。
当我们检索第一次登录的行并获取第一个时间戳 (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
您认为这是解决这个问题的正确方法吗?
最佳答案
除非我严重误解了什么,否则你的方法不必要地复杂。您似乎有 A
和 B
,然后通过执行 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/