IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Une requète qui écrase des données supérieures aux 3 derniers mois


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut Une requète qui écrase des données supérieures aux 3 derniers mois
    Bonjour,

    J'essaie de créer une requête de type DELETE supprimant toutes les données de ma tables dont la date de mise en BDD est antérieure aux 3 derniers mois écoulés.
    C'est sur le "" dernies mois écoulés" que je bute précisement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE  from matable tous_mes_champs WHERE date_courante-3derniers_mois
    Désolé pour l'écriture foireuse. Je précise que je suis sous sqLite python


    Merci à vous

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,

    La syntaxe du DELETE https://www.sqlite.org/lang_delete.html


    La syntaxe des fonctions date et heure https://www.sqlite.org/lang_datefunc.html

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM <ta_table> where <ta_date_d_insertion> < DATE('NOW', '-3 months')
    Cordialement

  3. #3
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Génial le lien, que dire...merci !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Bonjour,

    Je reviens à la charge car je n'arrive pas à faire tourner ma requête en fait.
    J'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cursor.execute('DELETE FROM vivarium_test_table WHERE DATE('NOW', '-3 months')')
    Sans succès. Le problème doit venir du fait que je crée un objet datetime() de la date instantanée qui est stocké sous forme de string dans ma bdd. Je vais chercher

  5. #5
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM vivarium_test_table WHERE DATE('NOW', '-3 months')
    Il faut que tu compares la date d'insertion de ta ligne (à toi de donner le nom de la colonne) j'avais mis <ta_date_d_insertion> à la date calculée.
    Bien entendu, cela fonctionne à condition que la date d'insertion soit stockée au format ISO (AAAA-MM-JJ soit 2019-11-09 pour aujourd'hui) sous forme de chaîne de caractères.

    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM vivarium_test_table WHERE <ta_date_d_insertion>  <  DATE('NOW', '-3 months')
    à comparer à ce que tu as donné

    De plus, je ne connais pas assez python pour être affirmatif mais je crois qu'il va falloir doubler les quotes pour que cela arrive correctement à SQLITE.

    Cordialement

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 462
    Par défaut
    Bonjour,
    A moins que ce soit un problème de copier/coller, je vois surtout un problème dans le code: le délimiteur de chaine étant le même dans le code et dans la requête, il faut échapper ceux de la requête.
    Sinon ce que SqlLite reçoit n'est pas tout à fait ce que l'on croit.

    Tatayo.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/11/2012, 16h18
  2. Réponses: 1
    Dernier message: 26/07/2012, 10h25
  3. Réponses: 1
    Dernier message: 18/03/2012, 09h59
  4. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  5. Réponses: 4
    Dernier message: 09/01/2008, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo