У меня есть столбец с отметкой времени в базе данных mySQL и таблица с именем alerttime, в которой есть записи в текущем формате 2018-09-06 15:59:00.
Я хочу запустить запрос, который просто показывает записи, которые находятся за 5 минут от текущего времени и даты (в расширенном режиме). например, если сейчас время 15:55 - будет показана запись со временем (2018-09-06 15:59:00)
Кто-нибудь знает, как этого добиться?
SELECT *
FROM (`todolist`)
WHERE `type` = '2' AND
user_id = '1' AND
DATEADD(minute, -5, GETDATE())
Я пробовал описанное выше, но думаю, что это неправильный способ, я просто нашел его где-то на форуме
sql - это тип базы данных






SELECT * FROM (`todolist`) WHERE `type` = '2' AND user_id = '1' AND alerttime >= date_add(now(), interval 5 minute)
Я пробовал это и, кажется, просто получаю 0 результатов и не уверен, почему
Ваш тип и user_id - INT или VARCHAR? Если они имеют тип int, удалите «У вас есть данные в вашей таблице в будущем для type = 2 и user_id = 1?». Просто попробуйте: SELECT * FROM (todolist) WHERE alerttime> = date_add (now (), interval 5 минут)
Пользователь уже удалил user_id и type из запроса, но по-прежнему возвращает 0 результатов. Структура столбца настроена на дату и время (проверенная временная метка), такая же проблема. Не уверен, почему это могло происходить!
Потому что в будущем нет записи! Отметка времени создается с текущей отметкой времени. Что вам может понадобиться через 5 минут после создания оповещения? Не за 5 минут до этого?
Да, в основном в столбце у меня есть время оповещения, которое, скажем, можно установить через 10 минут прямо сейчас. когда до записи остается 10 минут, сценарий затем отправляет пользователю электронное письмо, сообщая, что у него есть предупреждение через 10 минут. По сути, мне нужно отображать все записи, которые появятся через 10 минут в будущем.
Если запрос вернул 0 результатов, это потому, что у вас неправильные данные в вашей таблице.
Я думаю, вам не хватает сравнения, вы добавляете -5 минут, но после этого вы не сравниваете это значение, вам может потребоваться сравнить это с чем-то вроде этого.
DATEADD(minute, -5, GETDATE()) < GETDATE()
вы также можете проверить ссылки для Microsoft:
https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-2017
Надеюсь, это поможет, вам просто нужно с чем-то сравнить результат добавления -5 минут.
какой тип дб?