Вот так: PHP: SELECT `id_win` FROM `5minbidders` WHERE DATE_FORMAT(`time_start`, '%Y%m%d%H%i') = DATE_FORMAT(NOW() - INTERVAL 5 MINUTE, '%Y%m%d%H%i') по аналогии с минутой, только прописал интервал 5 минут
Да это легко делается-то. Не понимаю, почему ты до сих пор не прислушался к советам... --- Добавлено --- Можно одним запросом подготовить одну результирующую таблицу, в которой будут записи и за прошедшие 5 минут, и за 5 минут, которые предшествуют тем 5 минутам. И так далее пятиминутными отрезками. Одним запросом. Можно и ограничить только двумя пятиминутками. И это всё еще будет один запрос.
Да, ты не понял. Это мы уже выяснили. Советы были про то, что тебе надо сначала с теориями разобраться, а потом уже загружать себя практикой. Программирование это реализация некоторого алгоритма лексемами какого-то языка. А алгоритм в свою очередь решает какую-то задачу выполняя манипуляции над какими-то данными. Вот это всё ты просто ОБЯЗАН уметь делать. Но ты не. Увы. Язык программирования дает тебе инструменты. Твои данные будем считать стройматериалом. Твой алгоритм - планом строительства. Когда все правильно сделано, нужные инструменты применены в правильном порядке и в грамотной дозировке - у тебя получается классный дом. Иначе - у тебя получается куча дерьма, потраченного впустую времени и денег. Ты с завидным упорством пытаешься именно по второму пути идти. Ок, это твоё личное дело. Но что мешает тебе нанять профессионального строителя, который тебе построит дом, в котором будет не страшно ночевать? Гордость? Ты всё хочешь сам сделать? Ну оглянись просто на прошедшее время и на полученный результат. Все твои задачи решаются парой-тройкой запросов, которых ты не видишь в силу низкого скила в программировании. Тебе тут пытаются помогать, но результата всё нет и нет. Вывод одной таблицы, содержащей данные по пятиминутным отрезкам сводится в простом применении агрегации (это ты бы усвоил из теории по базам данных) и небольшой математической формулы (это в начальной и средней школе проходят) примененных в нужном порядке над определенными данными (это основы алгоритмизации программирования, опять же школьный курс). Фильтр по "за вот эти пять минут и те что перед ними но не более того" это просто один условный оператор (алгоритмизация программирования и основы баз данных) но который можно написать как минимум двумя разными способами (алгоритмизация программирования и основы баз данных). Твоя задача не какая-то там специфическая. Она просто напросто требует умения в обработке данных, представления промежуточного результата и так далее. А дальше ты уже сам решаешь как микропрограмму встроить в макропрограмму. Например, та же одна результирующая таблица может быть сделана несколькими путами. Ну самый красивый это естественно один раз построить её на стороне СУБД и потом на стороне клиента - в твоем случае это язык пхп - её обработать согласно принятым условным обозначениям. А можно сделать просто запрос фильтрующий последние 10 минут и потом на стороне пхп отфильтровать "эти пять" и "те пять что перед эти пять". А можно вообще просто каждый раз дергать всю таблицу и фильтровать на стороне пыха "эти" и "те". Да, решение люто говнокодное, но тем не менее оно решает же поставленную задачу, следовательно относится к рабочим решениям. Ну не совсем оптимальным, мягко говоря, но рабочим же. И вот ты уже определился в каком порядке, как, где и с какими данными ты работаешь. Остается только подобрать функции, реализующие этот алгоритм. И вот ты берешь из памяти или открываешь справочник и находишь там нужные тебе функции. Дальше ты соединяешь шаги между собой и проводишь отладку чтоб убедиться, что каждый шаг меняет состояние системы ожиданным и корректным образом. На выходе ты получаешь рабочий скрипт, который реализует выбранный алгоритм решения поставленной задачи.
Какой же ты варенный и портишь этим этот форум, учу язык и сразу практикуюсь. Что не так? Зачем ты мне тут лекции читаешь, на фига иначе форумы?!! Обратился с вопросом и просьбой помочь подобрать функцию, сформулировал конкретный вопрос, а ты мне опять сочинение пишешь. Опять тебя в лирику потянуло( Решил вопрос пока так: PHP: FROM `bidders` WHERE `time_start` BETWEEN (NOW() - INTERVAL 10 MINUTE) AND (NOW() - INTERVAL 5 MINUTE);
Поздравляю, ваше сообщение вошло в фонд золотых цитат от новичков на PHP.RU. Так как автор не понимает, нафига форумы, тема переносится в "сделайте за меня". Там не надо понимать совсем ничего.
Вы, главное помните, что NOW() восходит к таймзоне сервера, чтобы не задаваться вопросами при переездах. Ну и да, на встроенных функциях, конкретно такой запрос не ок строить, лучше передавать статический параметр даты.
Не пишите NOW() - это главная ошибка вышеприведенных советчиков при использовании NOW() вы забудете про индексы и соответственно ваши запросы будут отрабатывать долго при больших данных запросы будут отрабатывать дольше по времени чем указано в настройках php, что соответственно будет приводить к ошибке. Передавате сформированную дату php отнимая нужное кол-во секунд используя UNIX_TIMESTAMP в базе и по полю сделайте индекс time_start. Проверяйте запросы с помощью EXPLAIN, это правило вы должны делать для всех запросов используемых в приложении для того, чтобы набить руку и приобрести необходимый опыт
одно с другим никак не связано. Ну не забывай про индексы. NOW() ничего плохого не делает и не заставляет тебя про индексы забывать.
Всё верно, тут не нужно сломя голову везде отказываться от встроенных функций . Нужно просто понимать какие значения от них ожидать и какие ограничения в конкретной субд могут вызвать.
перевожу на русский: если запрос при следующем вызове должен вернуть другие результаты, кеширование на стороне MySQL невозможно. — К.О. то же самое можно сказать про любой запрос, который работает с обновляемыми данными. кеш сбрасывается при изменении таблицы, участвующей в запросе, даже если изменились строки, не входящие в результат запроса. например у вас есть запрос, выводящий сообщения из определённой темы на форуме. типа как для этой страницы кроме всего прочего он цепляет данные пользователей: кол-во сообщений и симпатий. пока на форуме ничего не происходит он прекрасно кешируется самим mysql и при повторном вызове отдаёт данные быстро. но как только любой пользователь получит симпу или у него изменится "дата последнего входа" или любое другое поле, которое нам вроде бы неинтересно, кеш нашего запроса анулируется. т.к. в нем участвует таблица пользователей.