1

仅当这两个记录之间的时间为 15 分钟或更长时间时,我才需要能够使用 sql 找到第一条和第二条记录。

让我举一个小例子,这样你就可以看到我需要什么:

ID| Time | Serial |   
 1| 10:45|   13   |  
 2| 11:00|   12   |  
 3| 11:17|   12   |  
 4| 11:00|   13   |  
 7| 11:05|   13   |  
 8| 11:07|   12   |  

我需要得到这些行:

ID| Time | Serial |

1| 10:45| 13 |
2| 11:00| 12 |
3| 11:17| 12 |
4| 11:00| 13 |
7| 11:05| 13 |
8| 11:07| 12 |

并输出如下:

Time 1 | Time 2 | Serial | Usage  
 10:45 | 11:00  | 13     | 15min
 11:00 | 11:17  | 12     | 17min

编辑:我只需要同时比较 2 条具有相同序列号的记录。当然还有所有的记录。我在时间列中有这种类型的数据:2012-09-06 16:53:05.581

4

1 回答 1

1

也许是这样的:

SELECT
    time1.time,
    time2.time,
    time1.serial,
    (time2.time - time1.time) / 60 AS usage
FROM
    mytable time1,
    mytable time2
WHERE
    time1.id != time2.id
    AND time1.serial = time2.serial
    AND time2.time - time1.time > 60 * 15

我不熟悉 MySQL 中的时间处理——我假设它们可以被减去,并且差异以秒为单位。如果需要显式转换,请在此处使用函数。

附录:这应该可以很好地处理成对的记录条目。但是,如果三个之间有 15 分钟,那么这将产生 1-2、2-3 和 1-3,因此您可能需要稍微修改一下。

于 2012-09-26T18:58:26.923 回答