MySQL में, यह काफी आसान है, क्योंकि आप प्रत्येक पंक्ति के लिए सेंसर समय को स्टोर करने के लिए एक चर का उपयोग कर सकते हैं, फिर समय अंतर की गणना करते समय अगली पंक्ति में इसका उपयोग कर सकते हैं। यह तकनीक एमएस एसक्यूएल में काम नहीं करती है क्योंकि यह एक चयन में चर को असाइन करने की अनुमति नहीं देती है जो डेटा भी लौटा रही है। यह शायद SQL के अन्य संस्करणों में भी काम नहीं करेगा। सामान्य तरीका यह होगा कि एक ऑफ़सेट जॉइन तैयार किया जाए, जिससे जॉइन पिछली पंक्ति से मान लौटाता है, लेकिन यह काफी धीमा हो सकता है।
उस ने कहा, यहाँ इसे MySQL में करने का एक तरीका है:
SELECT
sensor_time,
time_diff,
TIME_TO_SEC(time_diff) > 30 AS alarm
FROM (
SELECT
sensor_time,
TIMEDIFF(sensor_time, @prev_sensor_time) AS time_diff,
@prev_sensor_time := sensor_time AS prev_sensor_time
FROM sensor_table,
(SELECT @prev_sensor_time := NULL) AS vars
ORDER BY sensor_time ASC
) AS tmp;
+---------------------+-----------+-------+
| sensor_time | time_diff | alarm |
+---------------------+-----------+-------+
| 2009-09-28 07:08:12 | NULL | NULL |
| 2009-09-28 07:08:40 | 00:00:28 | 0 |
| 2009-09-28 07:09:10 | 00:00:30 | 0 |
| 2009-09-28 07:09:40 | 00:00:30 | 0 |
| 2009-09-28 07:10:10 | 00:00:30 | 0 |
| 2009-09-28 07:10:40 | 00:00:30 | 0 |
| 2009-09-28 07:41:10 | 00:30:30 | 1 |
| 2009-09-28 07:41:40 | 00:00:30 | 0 |
| 2009-09-28 07:42:10 | 00:00:30 | 0 |
| 2009-09-28 07:42:40 | 00:00:30 | 0 |
+---------------------+-----------+-------+