Comment puis-je supprimer tous les enregistrements d'une table MySQL avant une certaine date, où la colonne de date est au format DATETIME?
Un exemple de date/heure est 2011-09-21 08:21:22
.
DELETE FROM table WHERE date < '2011-09-21 08:21:22';
Cela m'a aidé à supprimer des données basées sur différents attributs. Ceci est dangereux alors assurez-vous de sauvegarder la base de données ou la table avant de le faire:
mysqldump -h hotsname -u username -p password database_name > backup_folder/backup_filename.txt
Vous pouvez maintenant effectuer l'opération de suppression:
delete from table_name where column_name < DATE_SUB(NOW() , INTERVAL 1 DAY)
Cela supprimera toutes les données d'avant un jour. Pour supprimer des données antérieures à 6 mois:
delete from table_name where column_name < DATE_SUB(NOW() , INTERVAL 6 MONTH)
Montrer les résultats jusqu'à hier
WHERE DATE(date_time) < CURDATE()
Montrer les résultats de 10 jours
WHERE date_time < NOW() - INTERVAL 10 DAY
Montrer les résultats avant 10 jours
WHERE DATE(date_time) < DATE(NOW() - INTERVAL 10 DAY)
Ceux-ci travailleront pour toi
Vous pouvez trouver des dates comme celle-ci
SELECT DATE(NOW() - INTERVAL 11 DAY)