Você armazena a data em que um item é criado em um campo?
Se então,
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);
Deveria trabalhar...
Você pode executá-lo em uma tarefa agendada/cron job ...
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);