2016-11-09 3 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 
関連する問題