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

  • Автор темы Fe077
  • Обновлено
  • 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 - действительно не понимаю, почему это здесь

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

Джон Б.

Fe077


Рег
20 Oct, 2015

Тем
69

Постов
189

Баллов
544
  • 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).
 

Dianafem


Рег
03 Oct, 2012

Тем
61

Постов
187

Баллов
492
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно