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