我有一个事件表:
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)。我错过了什么吗?
答案 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