В SQL: Как найти два значения даты, где начинается второе, когда заканчивается первое? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь выполнить SQL-запрос, чтобы найти (и объединить) две записи дат, где вторая дата начинается через короткий срок, например, x, после окончания первой даты.

Данные в моемТаблица состоит (среди прочих столбцов) из двух столбцов даты: добавленных и удаленных.Я сравниваю записи с копией таблицы, объединенной с оригиналом

SELECT *
FROM table
LEFT JOIN table AS table2 ON table.id=table2.id AND table.removed<table2.added

. С помощью этого кода я могу получить все записи, которые не перекрывают друг друга.Как я могу добавить еще один критерий для определения peroid x, который дает мне только непересекающиеся даты, которые находятся внутри диапазона x.Так что-то вроде "table2.removed - table.added <= x".</p>

Лучше всего было бы объединить эти строки в одну, если подходят вышеуказанные критерии.

РЕДАКТИРОВАТЬ: образец таблицы данных и результат

id          added                 removed
1           2009-03-11 23:27:58   2017-01-28 04:45:20
1           2017-01-31 05:07:10   2018-01-22 14:14:11

Так, например, я хочу обнаружитьэтот ряд с x <5 дней. </p>

1 Ответ

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

Функции даты, как известно, специфичны для базы данных.Но вот идея использования стандартного синтаксиса:

SELECT *
FROM table t LEFT JOIN
     table t2
     ON t.id = t2.id AND
        t2.added > t.remove and
        t2.added < t.remove + interval '5 day'  -- whatever value you want
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...