2017-01-12 35 views
0

我正在使用mysql並需要查找時間戳範圍內的用戶。一列是用戶進入時注意的,另一欄是用戶注意時的註釋。mysql比較同一行上的2個時間戳列到搜索範圍

  In      Out      Name 
Row1 2017-01-10 08:00:00  2017-01-10 15:00:00  Sam 
Row2 2017-01-10 11:00:00  2017-01-10 17:00:00  Tim 


SELECT * FROM `TABLE` WHERE In > '2017-01-10 09:00:00' AND Out < '2017-01-10 13:00:00' 

OR(任何人進來,以前後離開)

SELECT * FROM `TABLE` WHERE In > '2017-01-10 07:00:00' AND Out < '2017-01-10 18:00:00' 

這應返回兩個用戶,因爲他們從早上8點到下午1點或早上7點到下午6點的時間範圍內都在辦公室。但它返回一個空行。誰能幫忙?

回答

0

沒有給定的記錄您的表中的時間。因此沒有返回。

您的查詢應該是這樣

SELECT * 
FROM TABLE 
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT 
AND '2017-01-10 13:00:00' BETWEEN IN AND OUT 

編輯:從評論

當我們談論的範圍,我們指定2倍的值。所以在提到的2個值範圍內,只有1個用戶。如果您關注所有可能的用戶,請將AND替換爲OR

所以對於你的情況,查詢將

SELECT * 
FROM TABLE 
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT 
OR '2017-01-10 13:00:00' BETWEEN IN AND OUT 
+0

謝謝你,但,不退還的2個用戶。薩姆在上午8點,蒂姆在上午11點。搜索範圍從上午9點到下午1點,這應該返回兩個用戶。 – lee

+0

謝謝。或者工作,但我注意到如果我設置我的搜索範圍例如'2017-01-10 07:00:00'之間進出或'2017-01-10 18:00:00'之間進出...我沒有得到任何結果。我應該讓這兩個用戶都在時間範圍內。有什麼建議麼? – lee

+0

嘗試像你這樣的正式查詢,但用OR運算符'SELECT * FROM TABLE WHERE In''2017-01-10 07:00:00'OR Out''2017-01-10 18:00:00''@ lee –