繁体   English   中英

如何选择最新日期时间减去 30 分钟之间的数据范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM