Você pode tentar usar esta condição:
WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY)
Para que todo o script SQL fique assim:
CREATE EVENT delete_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO BEGIN
DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY);
END;
No entanto, no seu lugar, eu resolveria o problema com um script cron simples. As razões para fazer isso são simples:é mais fácil manter o código, sem soluções alternativas de SQL feias, integra-se suavemente ao seu sistema.