Сделайте выбор на основе разницы в датах - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу сделать выбор на основе разницы в дате в 2 таблицах. Меня интересуют только значения, в которых разница в дате составляет плюс / минус один день. Что-то вроде:

select aa.*
from A aa
inner join B bb on aa.ID=bb.ID
where difference(aa.date and bb.date) is +- 1 day

Что я имею в виду под + - один день:

Плюс один день (один день между aa.date и bb.date)

aa.date = 02-01-2020  (January 2nd)
bb.date = 03-01-2020  (January 3rd)

Минус один день (один день между aa.date и bb.date)

aa.date = 02-01-2020  (January 2nd)
bb.date = 01-01-2020  (January 1st)

Более одного дня (и не заинтересован в этом значении)

aa.date = 02-01-2020  (January 2nd)
bb.date = 04-01-2020  (January 1st)

or
aa.date = 02-01-2020  (January 2nd)
bb.date = 31-12-2019  (December 31st)

Надеюсь, что это имеет смысл. Спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Вы можете использовать функцию abs следующим образом:

select aa.*
from A aa inner join B bb
  on aa.ID = bb.ID
 And abs(aa.date - bb.date) <= 1;

Ура !!

1 голос
/ 04 февраля 2020

Вы можете использовать арифметику даты c в предложении on:

select aa.*
from A aa inner join
     B bb
     on aa.ID = bb.ID and
        aa.date >= bb.date - interval '1' day and
        aa.date <= bb.date + interval '1' day;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...