[slq] supprimer ligne en fonction d'une date
DaRenzo
-
Jean_Jacques Messages postés 1040 Date d'inscription Statut Membre Dernière intervention -
Jean_Jacques Messages postés 1040 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Après une journée de recherches infructueuses, y aurait-t-il un cerveau capable de m'indiquer le chemin à suivre pour solutionner ce problème?
J'ai une base de données qui contient plusieurs colonnes dont une "date".
Pour éviter une surcharge de ma base de données, je souhaite pouvoir éliminer les lignes qui possèdent une date antérieure à par exemple 1 mois.
Pour l'instant ma requête ressemble à ça :
DELETE * FROM historique WHERE date_hist =(SELECT * FROM historique WHERE date_hist <= CURRENT_DATE - INTERVAL 10 DAY)
Sans résultats..
y a-t-il quelqu'un pour m''éclairer??
Merci d'avance
Après une journée de recherches infructueuses, y aurait-t-il un cerveau capable de m'indiquer le chemin à suivre pour solutionner ce problème?
J'ai une base de données qui contient plusieurs colonnes dont une "date".
Pour éviter une surcharge de ma base de données, je souhaite pouvoir éliminer les lignes qui possèdent une date antérieure à par exemple 1 mois.
Pour l'instant ma requête ressemble à ça :
DELETE * FROM historique WHERE date_hist =(SELECT * FROM historique WHERE date_hist <= CURRENT_DATE - INTERVAL 10 DAY)
Sans résultats..
y a-t-il quelqu'un pour m''éclairer??
Merci d'avance
A voir également:
- [slq] supprimer ligne en fonction d'une date
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Fonction si et - Guide
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
3 réponses
Bonsoir,
peut être comme ça (je ne connais pas ta base):
sous Acces on écrierai:
peut être comme ça (je ne connais pas ta base):
DELETE * FROM historique WHERE date_hist <= CURRENT_DATE - INTERVAL 10 DAY
sous Acces on écrierai:
DELETE * FROM historique WHERE date_hist <= FormatDateTime(now()-10)
Salut,
Je ne connais pas particulièrement la syntaxe que tu utilises (le CURRENT_DATE - INTERVAL 10 DAY). C'est sur quel SGBD ?
Mais je mettrais plutot : date_hist =(SELECT dat_hist FROM car le * ramène tous les champs de la table donc pas d'equalité avec une date ;-)
Et pour moi il doit y avoir une syntaxe plus simple comme :
DELETE * FROM historique WHERE date_hist <= (CURRENT_DATE - INTERVAL 10 DAY)
Pas besoin d'une sous requete
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Je ne connais pas particulièrement la syntaxe que tu utilises (le CURRENT_DATE - INTERVAL 10 DAY). C'est sur quel SGBD ?
Mais je mettrais plutot : date_hist =(SELECT dat_hist FROM car le * ramène tous les champs de la table donc pas d'equalité avec une date ;-)
Et pour moi il doit y avoir une syntaxe plus simple comme :
DELETE * FROM historique WHERE date_hist <= (CURRENT_DATE - INTERVAL 10 DAY)
Pas besoin d'une sous requete
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Bonjour DaRenzo,
Voici une syntaxe SQL sous ACCESS 2000 qui a fait ses preuves pour supprimer les enregistrements de plus d'un an.
Avec un petit message d'alerte .....
Il suffit d'adapter le tout à votre contexte et de remplacer la valeur 365 par celle de votre choix.
If MsgBox("Confirmez-vous la suppression ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
DoCmd.RunSQL "DELETE Transactions.RéfTransaction, Transactions.RéfValeur, Transactions.RéfOpération, Transactions.RéfStatut, Transactions.DateSaisie, Transactions.DateLimite, Transactions.DateSolde, DateDiff('d',[datesolde],Now()) AS [Délai dépassé ] FROM Transactions WHERE (((DateDiff('d',[datesolde],Now()))>365));"
Cordialement
Voici une syntaxe SQL sous ACCESS 2000 qui a fait ses preuves pour supprimer les enregistrements de plus d'un an.
Avec un petit message d'alerte .....
Il suffit d'adapter le tout à votre contexte et de remplacer la valeur 365 par celle de votre choix.
If MsgBox("Confirmez-vous la suppression ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
DoCmd.RunSQL "DELETE Transactions.RéfTransaction, Transactions.RéfValeur, Transactions.RéfOpération, Transactions.RéfStatut, Transactions.DateSaisie, Transactions.DateLimite, Transactions.DateSolde, DateDiff('d',[datesolde],Now()) AS [Délai dépassé ] FROM Transactions WHERE (((DateDiff('d',[datesolde],Now()))>365));"
Cordialement