"Nelle vicinanze" è piuttosto confuso.
Per unirti a table2 dove timee si trova entro 10 secondi da dateee in futuro:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
Il
LEFT JOINmantiene le righe datable1nel risultato, anche senza corrispondenza intable2. -
Possono esserci più corrispondenze, in modo che ogni riga delle tabelle di base possa essere restituita più volte in varie combinazioni.
Alternativa
Per unire ogni riga in table1 alla riga con il timestamp successivo più alto. Esattamente una riga nel risultato per riga su 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;
Un indice su (timee) è essenziale per le prestazioni.