2009-09-02 20 views
0

我有一個數據庫與一堆日期。在給定日期的情況下,我希望獲取數據庫中的下一個日期和數據庫中的上一個日期。鑑於日期,如何獲取數據庫中的下一個和前一個日期

所以給定10/10/09,10/12/09和10/15/09的數據庫,如果有人輸入日期10/13/09,它應該返回10/12/09作爲以前日期和10/15/09作爲下一個日期。

我該怎麼做?謝謝!

回答

4

你也可以用它來輕鬆地返回整個記錄而不僅僅是日期。

-- Get previous date row 
SELECT TOP 1 OrderDate, ... FROM Table WHERE OrderDate < @MyDate ORDER BY OrderDate DESC 
-- Get Next date row 
SELECT TOP 1 OrderDate, ... FROM Table WHERE OrderDate > @MyDate ORDER BY OrderDate 

請注意,以前的訂單按日期降序排列,其中下一個訂單按升序排列。

+0

+1擊敗我吧。這真是一個更好的方法,因爲如果需要,您可以獲得與這些日期相關的其他字段,並且性能在其他方面是相同的。 – harpo 2009-09-02 01:39:38

+2

這個問題被標記爲_mysql_,這將需要'LIMIT'而不是'TOP'。 – 2009-09-02 02:13:16

+0

如果你只有年份或只有年份和月份,你怎麼能做同樣的事情? – Binarytales 2009-11-09 11:40:02

7

爲此,您可以輕鬆地利用兩個查詢:

-- get previous date 
SELECT MAX(DateField) WHERE DateField < '2009-10-13'; 
-- get next date 
SELECT MIN(DateField) WHERE DateField > '2009-10-13'; 

如果你有一個的DateField索引,那麼這個查詢也將是非常有效的。

相關問題