SQL восстановить данные между отметкой времени - PullRequest
3 голосов
/ 10 июля 2019

Я хотел бы извлечь из моей базы данных все поля, которые находятся между полем ultima_modifica (TIMESTAMP) и ultima_modifica + attesa (Enum '1', '3', '5') enter image description here last_change - это (отметка времени

ultima_modifica (ENUM)

SELECT * FROM `my_table` WHERE ultima_modifica between ultima_modifica and ultima_modifica + interval attesa minute 

таким образом я получаю все результаты

Цель - извлечь только те данные, которые находятся между моей отметкой времени (ultima_modifica) и моей отметкой ultima_modifica + Enum (3)

Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Попробуйте использовать TIMESTAMPADD:

SELECT *
FROM my_table
WHERE ultima_modifica BETWEEN ultima_modifica AND TIMESTAMPADD(MINUTE, attesa, ultima_modifica);

Используя TIMESTAMPADD, мы обойдем проблему работы с литеральным значением, необходимым для INTERVAL.В этом ответе предполагается, что attesa - это столбец в вашей таблице, единицы измерения - минуты.

0 голосов
/ 10 июля 2019

Это ваше условие фильтрации:

WHERE last_change between last_change and last_change  + interval wait_time minute 

Ну, есть три варианта:

  • Если last_change или wait_time равны NULL, то нет строк
  • Если wait_time отрицательно, строки не возвращаются.
  • В противном случае все строки возвращаются.

Зачем?Потому что любое время всегда будет «между» этим временем и временем в несколько минут в будущем.

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

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