MySQL: Apagando registros antes de uma determinada data

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? 🙂

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *