Получить ближайшую к сегодняшнему дню дату в PHP из базы данных - PullRequest
3 голосов
/ 18 апреля 2011

UPDATE

Я создаю серверную часть сайта. Смысл веб-сайта - дать четкий обзор посетителям, когда и какие мероприятия мы организуем.
Поэтому я заполнил базу данных всеми видами деятельности. Каждое действие имеет дату, имя и некоторую другую информацию.

Совершенно очевидно, что посетителям не помогают показы действий в прошлом, поэтому я хочу, чтобы они только показывали предстоящие действия. И чтобы сэкономить много работы, было бы неплохо сделать всю работу PHP / MySQL и показать посетителям только 2 следующих события.

Можете ли вы посоветовать мне функцию MySQL, чтобы сделать это?

Заранее спасибо,

Ответы [ 3 ]

3 голосов
/ 18 апреля 2011

Вы можете использовать DATEDIFF и ABS ...

SELECT * FROM `activities` ORDER BY ABS(DATEDIFF(NOW(), `date`)) LIMIT 2

Из обновленного вопроса должны рассматриваться только будущие действиясчитается ... Итак ...

SELECT * FROM `activities` WHERE `date` > NOW() ORDER BY `date` LIMIT 2
3 голосов
/ 18 апреля 2011

Просто несколько советов:

Выберите 2 ближайших события до текущего момента и ближайших 2 после текущего момента.

(SELECT *
FROM ...
WHERE `time` < NOW()
ORDER BY `time` DESC
LIMIT 2)
UNION
(SELECT *
FROM ...
WHERE `time` > NOW()
ORDER BY `time` ASC
LIMIT 2)

На данный момент у вас будет максимум 4 события в PHP. Но вам нужно только 2. Самое близкое 2. Чтобы выяснить, какие из ближайших вы используете strtotime и проверить разницу между временными метками событий и текущей временной меткой, которые вы можете получить, позвонив time(). После этого вы сохраняете только 2 ближайших события.

Обратите внимание, что этого можно достичь непосредственно из MySQL, но так сложнее.


@ Последнее обновление. Достаточно прочитать это, если вы не хотите знать больше.

Просто используйте этот запрос:

SELECT *
FROM ...
WHERE `time` > NOW()
ORDER BY `time` ASC
LIMIT 2
0 голосов
/ 18 апреля 2011
$query = 'SELECT .... FROM ... WHERE `date` > '.$today.' ORDER BY `date` DESC LIMIT 2';

$today зависит от типа date столбца.

...