Запрос отклонения во времени – так близко

  • Автор темы alexkunin
  • 33
  • Обновлено
  • 12, May 2024
  • #1
Моя база данных содержит таблицу, в которой хранятся метеорные события, представленные разными участниками. каждое событие имеет уникальный идентификатор, а также сохраняются дата, время и идентификатор участника.

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

Я хочу написать запрос, который бы возвращал все записи, совпадающие по дате и времени. однако, поскольку записывающее оборудование может быть неточно синхронизировано по времени, я хотел иметь возможность иметь отклонение плюс-минус 30 секунд. ВЫБЕРИТЕ a.event_id, a.user_ID, a.
 date
, a.
 Time
ИЗ Quadrantids_date КАК a ПРИСОЕДИНЯЙТЕСЬ к Quadrantids_date AS b ГДЕ a.event_id != b.event_id И a.
 date
= b.
 date
И time_to_sec(a.
 Time
) - time_to_sec(b.
 Time
) МЕЖДУ -30 И 30; Пример данных показывает следующее (идентификатор события, участник, дата, время) 37776 2 2017-01-01 01:08:45 47827 3 2017-01-01 01:09:07 33501 1 2017-01-01 01:14:59 47828 3 2017-01-01 01:15:00
37779 2 2017-01-01 01:19:29
37780 2 2017-01-01 01:19:36
33503 1 2017-01-01 01:24:48
33503 1 2017-01-01 01:24:48


события 37779 и 37780 находятся в пределах правила 30 секунд, но они принадлежат одному и тому же участнику, т. е. участнику номер 2. Их необходимо каким-то образом удалить.

также событие 33503 по какой-то причине дублируется - в основной таблице события уникальны, поэтому есть только 33505 - действительно не понимаю, почему это здесь

Указатели очень ценятся

Джон Б.

alexkunin


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 08, Jun 2024
  • #2
... AND time_to_sec BETWEEN (CONVERT('01:08:45' USING TIME) AND CONVERT('01:24:48' USING TIME)); должно сработать. Вам нужно будет определить минимальное и максимальное время (и учесть пересечение 00:00:00 и 12:00:00).
 

Iliabel


Рег
03 Oct, 2012

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно