[英]How to select range of data between latest DateTime minus 30 minutes
我试图弄清楚如何使用 MySQL 在 30 分钟的窗口中选择表中的最新 DateTime 值以及它附带的所有先前数据。
例如表:
DateAndTime
---------
09:00:00
08:59:50
08:59:40
08:59:30
08:59:20
08:59:10
08:59:00
08:58:50
08:59:40
...
...
08:30:00
我这样选择最长时间:
SELECT MAX(`DateAndTime`) AS "DateAndTime"
FROM TableA;
我一直在尝试INTERVAL()
函数,但我似乎无法让它返回最大时间以外的任何其他行。
我尝试了什么:
SELECT MAX(`DateAndTime`) AS "DateAndTime"
FROM TableA;
AND `DateAndTime` - INTERVAL 30 MINUTE;
我们可以将您的查询用作WHERE
子句中的子查询:
SELECT DateAndTime
FROM tableA
WHERE DateAndTime >=
(SELECT MAX(DateAndTime) - INTERVAL 30 MINUTE
FROM tableA);
如果我们想选择更多的列,我们只需将它们添加到主查询中。
如果我们想确保结果按日期排序,我们将添加一个ORDER BY
子句:
SELECT DateAndTime
FROM tableA
WHERE DateAndTime >=
(SELECT MAX(DateAndTime) - INTERVAL 30 MINUTE
FROM tableA)
ORDER BY DateAndTime;
看起来您需要一个子查询,因为您需要一个聚合函数来查找最新的时间戳,然后使用该值返回您需要的行。 试试这个:
SELECT DateAndTime
FROM TableA a
WHERE DATE_ADD(a.DateAndTime, INTERVAL 30 MINUTE) >=
(SELECT MAX(DateAndTime) FROM TableA)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.