我正在检查当前行和上一行之间的日期时间差异。
Pacific_Time 日期时间,
id int
SELECT A.id, A.Pacific_Time, B.id, B.Pacific_Time,
A.Pacific_Time - B.Pacific_Time AS Time_Delta from TBL1 A
JOIN TBL1 B
ON A.id - 1 =B.id
WHERE A.Pacific_Time - B.Pacific_Time > 5
LIMIT 30;
我正在加入同一张桌子,但将它向下或向上移动一排。大多数行以 1 秒的间隔分隔。我正在搜索相隔超过 5 秒的行。问题是,当 Pacific_Time 从 59 秒到下一分钟的 0 秒时,它给出了 41 秒的增量,而实际上它是 1 秒的差异。这是一个例子:
A.id A.Pacific_Time B.id B.Pacific_Time (A.Pacific_Time - B.Pacific_Time )
50 2011-07-19 07:49:55 49 2011-07-19 07:49:54 1.000000
51 2011-07-19 07:49:56 50 2011-07-19 07:49:55 1.000000
52 2011-07-19 07:49:57 51 2011-07-19 07:49:56 1.000000
53 2011-07-19 07:49:58 52 2011-07-19 07:49:57 1.000000
54 2011-07-19 07:49:59 53 2011-07-19 07:49:58 1.000000
55 2011-07-19 07:50:00 54 2011-07-19 07:49:59 41.000000
56 2011-07-19 07:50:01 55 2011-07-19 07:50:00 1.000000
57 2011-07-19 07:50:02 56 2011-07-19 07:50:01 1.000000
58 2011-07-19 07:50:03 57 2011-07-19 07:50:02 1.000000
我试过使用timediff()
它给我正确的结果,但运行速度要慢得多。这是在一个有 20000 行的表上运行的,但它需要在一个接近一百万行的表上运行。
有什么建议吗?
mysql Ver 14.14 Distrib 5.5.29,适用于 debian-linux-gnu