Io parto dal presupposto che tu richiami la query conoscendo l'id del lavoro svolto

Questa dovrebbe andare


codice:
select l.*, t.* from lavori l left join tariffe t using(id_utente)
where abs(datediff(l.data, t.data)) =
(
select min(abs(datediff(l.data, t.data))) as datediff 
from lavori l left join tariffe t using (id_utente)
where l.id_lavoro = 2
) 
and  l.id_lavoro = 2
L'unico problema è che se ci sono due giorni a distanza equivalente (ad esempio data lavoro 15/2, con una tariffa il 20 e una il 10) ti usciranno due righe