Puedes intentar usar esta condición:
WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY)
Para que todo el script SQL se vea así:
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;
Sin embargo, en su lugar, resolvería el problema dado con un simple script cron. Las razones para hacer esto son simples:es más fácil mantener el código, no hay soluciones alternativas desagradables de SQL, se integra sin problemas con su sistema.