MYSQL - получение результатов по дате сближения - PullRequest
1 голос
/ 14 апреля 2010

мой вопрос:

при условии, что у нас есть calendar_table с UNIX datetamp date_column, я хочу получить событие с ближайшей близостью к сегодняшней дате.

Так, например, если сегодня нет события, держите ближайшее, основываясь на его дате!

ОБНОВЛЕНО

вероятно, мне нужно быть более ясным, мне нужно извлечь не одно событие, а все события в таблице с одинаковой датой, ближайшей к сегодняшней дате!

Спасибо всем вам, ребята! ; -)

Ответы [ 3 ]

3 голосов
/ 14 апреля 2010
SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
2 голосов
/ 14 апреля 2010
SELECT *
FROM `calendar_table`
ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
LIMIT 1
0 голосов
/ 14 апреля 2010

Что вы можете сделать, так это выбрать разницу между сегодняшней датой и датой события и выбрать наименьший результат.

Сначала выберите разницу следующим образом:
SELECT DATEDIFF(EventDate, Now()) As Datediff FROM calendar
или если вы хотите найти события в прошлом:
SELECT Abs(DATEDIFF(EventDate, Now())) As Datediff FROM calendar

Тогда просто упорядочите это поле и уберите первое из списка.

...