"Perto" é um pouco confuso.
Para ingressar na
table2
onde timee
está dentro de 10 segundos de dateee
no futuro:SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
OLEFT JOIN
mantém linhas detable1
no resultado, mesmo sem correspondência emtable2
.
-
Pode haver várias correspondências, de modo que cada linha das tabelas base possa ser retornada várias vezes em várias combinações.
Alternativa
Para unir cada linha em
table1
para a linha com o próximo carimbo de data/hora mais alto. Exatamente uma linha no resultado por linha em table1
:SELECT *
FROM table1 t1
LEFT JOIN LATERAL (
SELECT *
FROM table2 t2
WHERE t2.timee >= t1.dateee
ORDER BY t2.timee
LIMIT 1
) ON TRUE;
Um índice em
(timee)
é essencial para o desempenho.