Para encontrar o carimbo de data/hora mais recente, primeiro use o operador de comparação para descartar carimbos de data/hora futuros. Em seguida, ordene pelo menor intervalo subtraindo possíveis candidatos de timestamp do timestamp desejado. Para obter apenas o resultado mais recente, limite 1.
Para obter a tabela2
val
coluna para exibir com as colunas table1, você só precisa executar o mesmo código para table2 dentro de uma subconsulta. SELECT update_time AS time, id1, id2, val, (
SELECT val from table2
WHERE '2004-10-19 10:04:00' >= update_time
ORDER BY '2004-10-19 10:04:00' - update_time
LIMIT 1
)
FROM table1 WHERE '2004-10-19 10:04:00' >= update_time
ORDER BY '2004-10-19 10:04:00' - update_time
LIMIT 1;