sql >> Databasteknik >  >> RDS >> Mysql

Radera poster äldre än en månad/30 dagar

DELETE FROM archive
WHERE STR_TO_DATE(SUBSTR(created_date, 0, 25), '%a, %d %b %Y %H:%i:%S') <
      DATE_SUB(NOW(), INTERVAL 30 DAY);

Du kan sedan ta bort PHP-koden för att beräkna datumintervallet och låta MySQL hantera det åt dig.

Om du har kontroll över databasstrukturen kommer det att vara mycket effektivare att lagra datumet i ett DATETIME-fält istället för att anropa STR_TO_DATE på varje databasrad.



  1. Är det skillnad på att använda INT(1) vs TINYINT(1) i MySQL?

  2. Ogiltig identifierare SQL

  3. MySQL-tabellstruktur, behöver jag en primärnyckel?

  4. Varför rundas casting från float till varchar i SQL Server?