Имейте в виду, я больше привык к Oracle, где даты можно манипулировать точно так же, как числа, если это необходимо, но я думаю, что вы должны искать строку, в которой указана дата с наименьшим отличием от даты поиска. Разница может быть положительной или отрицательной, поэтому для этого потребуется ABS ().
Как насчет
SELECT table.id,
ABS(TIMESTAMPDIFF(SECOND, table.time, [datetime.now])) as difference
FROM table
Если все выглядит нормально, вам нужно выбрать идентификатор с минимальной [разницей]