Как вы получаете следующую предстоящую дату из таблицы? - PullRequest
3 голосов
/ 13 апреля 2009

Я сейчас работаю над созданием бейсбольного сайта. На одной стороне страницы я хочу отобразить информацию о следующей грядущей игре. Я использую MySQL вер. 5.0.45. Мой стол построен так:

Команда противников, дата, время, счет

  • Дата указана в формате даты MySQL (гггг-мм-дд)
  • Я нашел команду datediff (date1, date2) и попытался поэкспериментировать с ней безуспешно

Я пробовал такие запросы, как:

SELECT *
FROM schedule
WHERE MIN(DATEDIFF(CURDATE(),date))
  • Но это вызывает у меня ошибку, потому что я использую функцию MIN() неправильно
  • Я все еще довольно новичок в MySQL, и я просто не могу понять это

Ответы [ 5 ]

12 голосов
/ 13 апреля 2009

Если вы хотите отобразить следующую игру (включая сегодняшнюю), вы можете использовать следующее:

SELECT * FROM `schedule` WHERE `date` >= CURDATE() ORDER BY `date` LIMIT 1;

Если вы хотите отобразить все предстоящие игры, используйте:

SELECT * FROM `schedule` WHERE `date` >= CURDATE() ORDER BY `date`;
0 голосов
/ 11 февраля 2016

попробуй SELECT max(day) FROM schedule

Это дает самую высокую дату из таблицы.

Чтобы получить следующий день, используйте:

SELECT  
DATE_ADD(max(day),INTERVAL 1 DAY)
FROM schedule 

(я использовал "день" для вашего поля "дата")

0 голосов
/ 13 апреля 2009

Пару вещей для рассмотрения.

Вы, вероятно, подвергаете себя вечным мукам, если называете столбец "дата".

Как известно, оптимизатор запросов не способен оптимизировать запросы, сравнивающие выражения и / или функции со значениями - старайтесь использовать только имена столбцов.

Следовательно, вы должны сравнить значение столбца с датой, скажем, CURDATE (). (Можно сравнивать значение столбца с выражением или функцией.)

0 голосов
/ 13 апреля 2009

Может быть:

select top 1 * from schedule where date>=CURDATE() order by date
0 голосов
/ 13 апреля 2009

Я думаю, что это будет примерно так:

SELECT * FROM `schedule` WHERE `date` > NOW() ORDER BY `date` LIMIT 1

LIMIT 1 ограничивает запрос возвратом одной строки, но если вам нужно более одной, вы можете соответствующим образом изменить число (или полностью пропустить LIMIT 1, чтобы получить данные для всех будущих игр)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...