Postgresql选择两个表之间的日期范围

时间:2016-05-17 14:24:00

标签: postgresql

我有两个表中包含日期字段。我想从表1中选择数据,其中日期是表2中任何日期的+/- 1天。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

select * from table1,table2 
where table1.date BETWEEN (table2.date - '1 day'::interval) 
AND (table2.date + '1 day'::interval) 
and ...

答案 1 :(得分:0)

如果只有+/- 1天,您可以使用这样的解决方法:

select col1, col2, ...
from table1 
where date_col in (select distinct date_col 
                      from table2
                      union all
                      select distinct (date_col - '1 day'::interval)
                      from table2
                      union all
                      select distinct (date_col + '1 day'::interval)
                      from table2
                     );

这具有相当好的性能,因为子查询只计算一次,并且将用于比较