另一个选项可能是:
select * from table_1 inner join table_2 on table_1.id = table_2.id
where DATEADD(hour,1,table_1.d_1) between table_2.d_1 and table_2.d_2
or DATEADD(hour,-1,table_1.d_2) between table_2.d_1 and table_2.d_2
您可以将完整代码剪切/粘贴到雪花中并运行 :-)
with table_1 as (
select 1 id, TO_TIMESTAMP('1/14/2021 14:34', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP('1/27/2021 10:31', 'mm/dd/yyyy hh24:mi' ) d_2
union select 1 id, TO_TIMESTAMP('2/4/2021 10:40', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP('7/2/2021 13:01', 'mm/dd/yyyy hh24:mi' ) d_2
union select 2 id, TO_TIMESTAMP('8/2/2020 00:04', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP('9/7/2020 11:26', 'mm/dd/yyyy hh24:mi' ) d_2
union select 2 id, TO_TIMESTAMP('11/4/2020 9:24', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP('2/8/2021 16:22', 'mm/dd/yyyy hh24:mi' ) d_2 )
, table_2 as (
select 1 id, TO_TIMESTAMP('1/14/2021 13:47', 'mm/dd/yyyy hh24:mi' )
d_1, TO_TIMESTAMP('1/27/2021 10:24', 'mm/dd/yyyy hh24:mi' ) d_2
union select 2 id, TO_TIMESTAMP('8/1/2020 23:57', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP('9/7/2020 11:22', 'mm/dd/yyyy hh24:mi' ) d_2
union select 2 id, TO_TIMESTAMP('11/4/2020 9:12', 'mm/dd/yyyy hh24:mi' ) d_1, TO_TIMESTAMP(' 2/8/2021 16:20', 'mm/dd/yyyy hh24:mi' ) d_2 )
select * from table_1 inner join table_2 on table_1.id = table_2.id
where DATEADD(hour,1,table_1.d_1) between table_2.d_1 and table_2.d_2
or DATEADD(hour,-1,table_1.d_2) between table_2.d_1 and table_2.d_2