SQL查询来过滤联接表中的日期范围中是否不存在一个表中的日期列?

时间:2019-03-27 21:14:19

标签: sql datetime data-analysis date-range presto

我有两个如下表:

表1:

ID  |  Timestamp
231   3/27/19 0:46
345   3/22/19 22:46

表2:

ID  |  Start Time   |  End Time
231   3/27/19 0:00    3/27/19 0:58
345   3/22/19 22:50   3/22/19 23:50

有没有一种好的方法,我只希望表1中的所有行在表2中的任何行的开始和结束时间范围内都不存在?

因此,表1中的任何时间戳不在该时间戳记中或不在该时间戳记中,则表2中的同一行的开始和结束时间都在该行中?

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

像这样吗?

SELECT * 
FROM TABLE1 
WHERE NOT EXISTS (SELECT NULL FROM TABLE2 
                  WHERE TABLE1.ID = TABLE2.ID 
                    AND TABLE1.TIMESTAMP >= TABLE2.START_DATE 
                    AND TABLE1.TIMESTAMP <= TABLE2.END_DATE)

我为您的列START_DATE和END_DATE命名。每个数据库之间如何处理空间差异。