Насколько я понимаю из вашего вопроса и запроса ниже, вы находите все отдельные сообщения, которые имеют разницу во времени между датой отправки и датой открытия более 7 дней.
Чтобы сделать разницу во времени, я бы рекомендовал использовать функцию DATEDIFF () , встроенную в SQL (вам может понадобиться отформатировать метки времени в формате даты с помощью DATE ()).
Поскольку две таблицы не связаны напрямую, вы можете сделать что-то вроде этого:
SELECT
messageOpenLog.*,
messageLog.*
FROM
messageLog LEFT JOIN messageOpenLog ON messageLog.message_id=messageOpenLog.message_id
WHERE
messageLog.user_id = messageOpenLog.user_id AND
DATEDIFF(
day,
DATE(messageLog.timestamp),
DATE(messageOpenLog.timestamp)
) > 7
Структура этого запроса зависит от структуры ваших таблиц.
Обратите внимание, что я использовал столбец .timestamp, но в ваших таблицах он может называться по-разному.
Также я не уверен, действительно ли это то, что вы хотите; если вы хотите увидеть, если сообщение старше 7 дней, требуется другой запрос.
Предполагая, что есть только одна строка messageSent, этот запрос получит все строки messageOpen для того же сообщения, которые имеют возраст более 7 дней.
Очень сложно дать вам точный запрос на основе представленной информации, такой как потенциальное количество строк с одинаковым message_id, как упоминает @amac, могут также быть случаи, когда в одной из таблиц нет строк с определенным message_id.