SQL Query, чтобы показать ближайшую дату?
Я пытаюсь понять, как написать запрос MySQL, который вернет ближайшие 3 события в терминах даты.
Это моя таблица:
EVENT_ID EVENT_NAME EVENT_START_DATE(DATETIME)
1 test 2011-06-01 23:00:00
2 test2 2011-06-03 23:00:00
3 test3 2011-07-01 23:00:00
4 test4 2011-08-09 23:00:00
5 test5 2011-06-02 23:00:00
6 test6 2011-04-20 23:00:00
Таким образом, результат запроса должен быть для ID 1,2,5, поскольку они наиболее близки к текущей по сравнению с текущей датой.
EDIT: запрос должен найти только будущие события.
Ответы
Ответ 1
SELECT event_id
FROM Table
ORDER BY ABS( DATEDIFF( EVENT_START_DATE, NOW() ) )
LIMIT 3
ABS()
означает, что событие 1 день назад так же близко, как событие 1 день в будущем. Если вам нужны только события, которые еще не были выполнены, выполните
SELECT event_id
FROM Table
WHERE EVENT_START_DATE > NOW()
ORDER BY EVENT_START_DATE
LIMIT 3
Ответ 2
SELECT *
FROM table
WHERE EVENT_START_DATE >= NOW()
ORDER BY EVENT_START_DATE
LIMIT 3
Ответ 3
SELECT event_id FROM Table ORDER BY EVENT_START_DATE LIMIT 3
Ответ 4
Я полагаю, это то, что вы искали. Это похоже на все ответы elses.
SELECT EVENT_ID FROM TABLE WHERE EVENT_START_DATE > NOW() ORDER BY ABS(DATEDIFF(EVENT_START_DATE, NOW())) ASC LIMIT 3