根据日期差异进行选择

时间:2020-02-04 13:01:21

标签: sql oracle

我想根据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

我一天的意思是:

加1天(aa.date和bb.date之间的一天)

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

减去1天(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 个答案:

答案 0 :(得分:1)

您可以在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;

答案 1 :(得分:1)

您可以按以下方式使用abs函数:

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

干杯!