2012-08-30 20 views
0

讓我們來選擇行說,我選擇從表中具有最大的日期值這樣的數據:MySQL查詢與一個更低或更高日期

SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name 

它正常工作,它選擇以這些數據「最新」日期值。

我想知道在MySQL中是否存在查詢以列出具有下一個下降日期的那些數據。 例如,在我的第一個選擇中,我選擇了那些具有MIN日期值的行,如下所示:2012-08-27 10:15:00 我想用另一個查詢來選擇那些至少包含日期值的數據最接近的下一個值是這樣的:2012-08-28 11:45:00

所以還有其他行具有更大或更小的日期值,但我不想選擇它們。只有最接近的下一個,從我目前。

回答

0

如果您有日期時間要找到最接近的下一個元素的值(我們將其命名爲comparison_date),你可以嘗試這樣的事:

SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name) 

這將返回所有日期時間值晚於該日期。如果你想將其限制在一個結果,你應該使用:

SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name) LIMIT 1 

另外,如果你想從當前時間的下一個最接近的日期時間,你可以用替代comparison_date NOW()這是一個MySQL功能。然後,你可以嘗試這樣的事:

SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > NOW() ORDER BY column_name) 

爲了尋找下一個更低的日期時間(或之前的日期時間,但是我們把它),你應該使用:

SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name < comparison_date ORDER BY column_name DESC) LIMIT 1