Supprimer des dates anciennes de chaque mois
Résolu
ayoub36_ah
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
ayoub36_ah Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
ayoub36_ah Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Supprimer des dates anciennes de chaque mois
- Supprimer rond bleu whatsapp - Guide
- Impossible de supprimer une page word - Guide
- Nombre de jours entre deux dates excel - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer pub youtube - Accueil - Streaming
6 réponses
Bonjour,
Pour trouver la date mini regarder avec un group by, quelque chose comme
et après supprimer tout sauf ces enregistrements
Pour trouver la date mini regarder avec un group by, quelque chose comme
select min(date) from table group by (annee(date),mois(date))
et après supprimer tout sauf ces enregistrements
delete from table where date not in (select min(date) from table group by (annee(date),mois(date)) )
Bonjour,
Merci pour votre réponse, je vois ce que vous voulez faire, mais moi je voulais qu'il détecte automatiquement la 1 ere date de chaque mois, et il conserve cette date, et puis il supprime toutes les données jusqu'à la 1 ere date du prochain mois.
Merci pour votre réponse, je vois ce que vous voulez faire, mais moi je voulais qu'il détecte automatiquement la 1 ere date de chaque mois, et il conserve cette date, et puis il supprime toutes les données jusqu'à la 1 ere date du prochain mois.
D'accord, est ce que vous pouvez me dire qu'est-ce que je dois mettre dans "group by (annee(date),mois(date)) "
Par ce que à chaque exécute cette requête, il me dit qu'il y'as une fonction qui n'existe pas :
Par ce que à chaque exécute cette requête, il me dit qu'il y'as une fonction qui n'existe pas :
select min(date_MAJ) from test group by (annee(date),mois(date))
La 1ere requête est bien fonctionnée, sinon pour la 2eme, voilà ce qu'il me dit :
MySQL said: Documentation
#1093 - You can't specify target table 'test' for update in FROM clause
delete from test where date_MAJ not in (select min(date_MAJ) from test group by DATE_FORMAT(date_MAJ, "%Y/%m"))
MySQL said: Documentation
#1093 - You can't specify target table 'test' for update in FROM clause
Quand on cherche ce type d'erreur de mysql il est indiqué que l'optimiseur n'accepte pas la même table dans le sous select, il faudrait passer par un niveau supplémentaire :
delete from test where date_MAJ not in (select * from (select min(date_MAJ) from test group by DATE_FORMAT(date_MAJ, "%Y/%m")) as t)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai executer votre requête : j'ai cette erreur:
#1292 - Incorrect datetime value: '01/02/2021'
et donc j'ai essayé de mettre la meme format:
et j'ai toujours la meme erreur :
#1292 - Incorrect datetime value: '01/02/2021'
#1292 - Incorrect datetime value: '01/02/2021'
et donc j'ai essayé de mettre la meme format:
delete from test where date_MAJ not in
(select * from (select min(date_MAJ) from test group by DATE_FORMAT(date_MAJ, "%d/%m/%y")) as t)
et j'ai toujours la meme erreur :
#1292 - Incorrect datetime value: '01/02/2021'
Si tu mets un format jma dans le group by tu ne peux pas trouver le premier jour du mois, il faut un critère mois/année
J'imaginais qu'avec plusieurs niveaux de requetes, un champ type date pouvait se retrouver comme une chaine, mais je viens de tester avec un champ type date ou datetime
chez moi fonctionne bien.
Ton champ date_MAJ est de quel type ? Sinon pas d'autre idée.
J'imaginais qu'avec plusieurs niveaux de requetes, un champ type date pouvait se retrouver comme une chaine, mais je viens de tester avec un champ type date ou datetime
delete from test where date_MAJ not in (select * from (select min(date_MAJ) from test group by DATE_FORMAT(date_MAJ, "%Y/%m")) as t)
chez moi fonctionne bien.
Ton champ date_MAJ est de quel type ? Sinon pas d'autre idée.