2016-11-09 46 views
1

我有一個事件表:顯示最新或即將發生的事件記錄

EventID  Name  StartDate 
1   Alpha  2016-07-01 
2   Bravo  2016-11-01 
3   Charlie  2017-03-01 
4   Delta  2017-06-01 
5   Echo  2017-09-01 

我想用這個SQL語句來顯示從當前日期的即將發生的事件:

SELECT TOP 1 * FROM Events WHERE StartDate < GETDATE() ORDER BY StartDate DESC 

但它返回的事件#2(應該是#3)。我錯過了什麼嗎?

回答

3

我覺得你的邏輯是錯的:

SELECT TOP 1 e.* 
FROM Events e 
WHERE e.StartDate > GETDATE() 
ORDER BY StartDate ASC; 

這得到下一個事件。你的邏輯得到了以前的事件。

0
SELECT TOP 1 * FROM Events DATEDIFF(DAY,GETDATE(),StartDate) >= 0 ORDER BY StartDate ASC 
相關問題