2016-11-09 44 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 
相关问题