Olá! Aprenda neste post como apagar registros antigos de uma tabela.
Utilizaremos uma função nativa do MySQL, chamada DATE_SUB().
Sintaxe: DATE_SUB(date, INTERVAL expr unit)
// NOME_COLUNA é do tipo DATETIME
// para excluir registros antes de 3 meses
DELETE FROM NOME_TABELA WHERE NOME_COLUNA < DATE_SUB(NOW(), INTERVAL 3 MONTH);
// para excluir registros antes de 1 dia
DELETE FROM NOME_TABELA WHERE NOME_COLUNA < DATE_SUB(NOW(), INTERVAL 1 DAY);
// para excluir registros de uma data específica
DELETE FROM NOME_TABELA WHERE NOME_COLUNA < '2016-06-10 07:00:00';
// para excluir registros de uma data específica
DELETE FROM NOME_TABELA WHERE DATE(NOME_COLUNA) < '2016-06-10';
Para saber quantas linhas serão excluídas, você pode usar o select abaixo:
SELECT COUNT(*) FROM NOME_TABELA
WHERE NOME_COLUNA < DATE_SUB(NOW(), INTERVAL 3 MONTH)
Para saber qual a data de corte, use:
SELECT DATE_SUB(NOW(), INTERVAL 3 MONTH);
Lembrando que para exclusão em banco de dados é bom que se faça um backup antes, beleza? 🙂