2016-07-15 27 views
-1

檢索的時間範圍數據 - this is the table of picture i want to retrieve datas from的MySQL從表


我需要兩個查詢。

  • 第一個是在當前時間之前獲取最新stopTime的actionNo。

  • 第二個查詢是獲取actionNo是否在當前時間之前的最新actionTime。

實施例:

如果當前時間爲:0點46分二十秒

  • 所述第一查詢是獲得actionNo 9(停止時間:0點45分00秒)

  • 第二個查詢是獲取操作否8(actiontime:00:41:30)

- this is eg of range to get data picture

+0

http://dev.mysql.com /doc/refman/5.7/en/comparison-operators.html#operator_between – ymas

+0

我想檢索操作編號\/_ \ /。 –

+0

什麼是first actionTime?當前時間之前的最新動作時間?在一個查詢中你需要兩個查詢還是兩個標準? – Philipp

回答

0
SELECT MAX(id) FROM timestuff WHERE `actionTime` < CURTIME(); 
SELECT MAX(id) FROM timestuff WHERE `stopTime` < CURTIME(); 

這可以讓你的動作/停止時間的最新的ID在當前時間之前,將工作,如果你的表始終是在爲了你已經表明(這意味着,IDS顯示您的時間值的年代表 - 您剛纔注意到的數據並非如此)。

對於您的情況:您可以採取另一步驟,在最接近當前時間的時間內添加內連接,然後查找該數據的標識。

首先查詢:對於當前時間之前最新的停止時間:

SELECT 
    timestuff.id 
FROM 
    (
     SELECT 
      MAX(stopTime) AS maxTime 
     FROM 
      timestuff 
     WHERE 
      `stopTime` < CURTIME() 
    ) AS time 
INNER JOIN timestuff ON timestuff.`stopTime` = time.maxTime; 

第二個查詢:對於當前時間之後的第一個actionTime:

SELECT 
    timestuff.id 
FROM 
    (
     SELECT 
      MIN(actionTime) AS minTime 
     FROM 
      timestuff 
     WHERE 
      `actionTime` > CURTIME() 
    ) AS time 
INNER JOIN timestuff ON timestuff.`actionTime` = time.minTime; 
+0

但兩個顯示120只有 –

+0

我想如果當前時間是16:54:00,那麼得到結果,然後第一個查詢結果是actionNo 65,secnod查詢結果是66的actionNo。\/_ \/ –

+0

您是否嘗試了內部連接查詢?第一個查詢失敗,因爲您的數據集的頂部爲120,我在寫入時沒有看到它,但這是我在添加帶有內部聯接的查詢時提到的那種問題 – Philipp