Bonjour à toutes et à tous,

Bon ce sujet dois être connu mais j'ai passée la matinnée sur google sans trouver quelque chose de fiable.
Je dois supprimer des données qui ont plus de 6 mois d'ancienneté dans la base.

$result['ordre'] //date stokée dans la base de donnée avec un datetime.

time() //récupère la date du jour

$diff = strtotime($result['ordre'])-time(); //retourne le nombre de seconde entre la date du jour et la date dans la base.

$delais = 15 778 463 ;

Ce que je voudrais faire c'est comparer le nombre de secondes $diff à $delais qui est le nombre de secondes qui s'écoulent en 6 mois

$diff = strtotime($result['ordre'])-time();
if($diff > $delais){
/* action à effectuer*/
}

Qu'en pensez-vous ?

3 réponses


GregWoot
Réponse acceptée

La réflexion est bonne.
Tu peux tester les dates sous forme d'objet DateTime sinon :

$dateMin = new DateTime();
$dateMin->modify('-6 month');

$dateBDD = new DateTime($result['ordre']);

if($dateBDD < $dateMin) {
    // Supprimer
}

Je suis pas certains que l'ajout/suppression de mois via modify() soit conseillé donc à tester.

Par contre, tu récupère l'intégralité de tes données et tu test ensuite en PHP la date pour savoir si tu dois supprimer ou non ?
Si oui, il serait plus simple de directement supprimer en SQL. (edit: Comme le dit @Martin)

Hello pourquoi ne pas le faire en sql directement ? Ou ton where serait :

DATE_SUB(NOW() , INTERVAL 6 MONTH)

Merci ça fonctionne
oui j'aurais pu le faire en sql directement mais pour diverses raisons je ne veux pas automatiser les suppressions
Merci à vous deux