Mysql是否计算同一字段中时间戳之间的时间差?

Mysql是否计算同一字段中时间戳之间的时间差?,mysql,timestamp,Mysql,Timestamp,是否可以从同一字段中的时间戳计算时间差?我的SQL知识还不错,但我不知道如何在同一张桌子上做这样的事情 ID, SENSOR, COUNT, TIMESTAMP '1461630', '1', '91', '2013-08-02 09:14:30' '1461629', '1', '92', '2013-08-02 09:13:29' '1461628', '1', '92', '2013-08-02 09:12:27' '1461627', '1', '91', '2013-08-02 09:

是否可以从同一字段中的时间戳计算时间差?我的SQL知识还不错,但我不知道如何在同一张桌子上做这样的事情

ID, SENSOR, COUNT, TIMESTAMP
'1461630', '1', '91', '2013-08-02 09:14:30'
'1461629', '1', '92', '2013-08-02 09:13:29'
'1461628', '1', '92', '2013-08-02 09:12:27'
'1461627', '1', '91', '2013-08-02 09:11:26'
'1461626', '1', '91', '2013-08-02 09:10:24'
'1461625', '1', '7', '2013-08-02 09:03:14'
'1461624', '1', '13', '2013-08-02 09:02:12'
'1461623', '1', '13', '2013-08-02 09:01:11'
'1461622', '1', '7', '2013-08-02 09:00:09'
'1461621', '1', '3', '2013-08-02 08:58:06'
我需要做的是,显示一个带有上升和下降时间值的饼图。我只有一个表要引用,所以它必须以分钟为间隔,只考虑上面的时间戳

具体来说,根据以下时间,机器大约7分钟没有运行。我得弄清楚这7分钟

'1461626', '1', '91', '2013-08-02 09:10:24'
'1461625', '1', '7', '2013-08-02 09:03:14'
这可能吗?或者我真的需要一个单独的表中的详细账目吗?显然,我不想创建更多的表,因为我正在使用的设备非常有限,而且它向我运行的tcp服务器报告这些数据已经是一个巨大的打击

显然,
TIMESTAMPDIFF(,)
不起作用,因为我需要两个参考点,而我只有一个。我在想象某种狡猾的子选择场景,但我不确定


干杯

您可以自行加入该表,在您的情况下,类似这样的操作很有效:

SELECT 
*
FROM
yourTable a
INNER JOIN yourTable b ON a.ID = b.ID + 1
WHERE TIMESTAMPDIFF(second, a.timestamp, b.timestamp) > 60
但是,当ID列中有间隙时,这可能会变得很糟糕。尤其是当你有*大量的数据时,它会变得丑陋(在性能方面(当你的表上没有好的索引时))

因此,我建议使用更高级的查询,使用变量。无需将表连接到自身,这通常运行得非常快:

SELECT * FROM (
SELECT
yt.*,
TIMESTAMPDIFF(second, @prevTS, `timestamp`) AS timedifference,
@prevTS:=yt.`timestamp`
FROM
yourTable yt
, (SELECT @prevTS:=(SELECT MIN(`timestamp`) FROM yourTable)) vars
ORDER BY ID
)subquery_alias
WHERE timedifference > 65
  • 看到它在现场工作了吗

要进一步改进此查询以显示时差过大的两行,这应该不是问题:)当您遇到严重问题时,请随时提问。

回答得很好,谢谢!:)是的,我实际上刚刚写完一个self-join,我觉得它看起来很凌乱,但它是完全一样的!选择lu_sensor_log.ID、lu_sensor_log.BOX_COUNT、lu_sensor_log.
时间差(lu_sensor_log.
时间
,t2.
时间
)作为lu_sensor_log左侧的差异,将lu_sensor_log作为t2上的t2加入。ID=lu_sensor_log.ID-1按lu_sensor_log.日志排序。
时间
描述@fancyPants我刚刚看到了你的答案,我想知道你是否也能回答这个问题:)我根据你的答案编写代码,但我遗漏了一些东西。如果ID不是主键,并且可能有许多具有相同ID的元组,会发生什么?也许我明天可以看一下:)这不是承诺,我现在很忙。