Отображать время с 5-минутными интервалами в базе данных - PullRequest
0 голосов
/ 11 июня 2019

У нас есть большая база данных, которая регистрирует позиции гусеничных машин.Итак, каждую секунду у нас появляются тысячи вакансий.Цель состоит в том, чтобы отфильтровать запрос SQL, потому что у нас слишком много данных.Если я сделаю простой «выбор времени из позиции», я получу много раз позиции.Но меня не интересуют все из них.Поэтому моя идея заключалась в том, чтобы создать интервал.Я хочу, чтобы база данных давала мне время позиции каждые 5 минут.

База данных использует функцию STR_TO_DATE, чтобы получить время позиции.

Мои данные таковы:

2019-06-05 00:00:00
2019-06-05 00:01:00
2019-06-05 00:01:00
2019-06-05 00:02:00

И я хочу это:

2019-06-05 00:00:00
2019-06-05 00:05:00
2019-06-05 00:10:00
2019-06-05 00:15:00

Как вы видите здесь, время позиции "01" "02".. исчез.Потому что я не хочу их.Я хочу время позиции в 00:05:00, затем в 00:10:00, НО я не хочу время позиции между этими интервалами.

select 
    distinct time 
from 
    positions 
where 
    time>STR_TO_DATE('05/06/2019 00:00', '%d/%m/%Y %H:%i')
    and time<STR_TO_DATE('06/06/2019 00:00', '%d/%m/%Y %H:%i')
limit 1000;

Как я могу это сделать в моем случае, пожалуйста?Как я могу изменить свой код?

Я использую Mysql Workbench версии 6.3.

1 Ответ

0 голосов
/ 12 июня 2019

Предположим, что time имеет тип DATETIME или TIMESTAMP и вам нужны только записи, в которых секунды в течение времени равны 0, а минуты в этом времени кратны 5, вы можете попробовать следующее:

WHERE MOD(UNIX_TIMESTAMP(time), 300) = 0

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

Чтобы решить эту проблему, вы можете попробовать это:

WHERE MOD(EXTRACT(MINUTE FROM time), 5) = 0
  AND EXTRACT(SECOND FROM time) = 0         -- if relevant
  AND EXTRACT(MICROSECOND FROM time) = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...