显示最新或即将发生的事件记录

时间:2016-11-09 06:20:33

标签: sql sql-server sql-server-2012

我有一个事件表:

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)。我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

我认为你的逻辑错了:

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

这会得到下一个事件。你的逻辑得到了上一个事件。

答案 1 :(得分:0)

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