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

PHP & Base de données Discussion :

mysql 5.5 avec delete et la date [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut mysql 5.5 avec delete et la date
    Bonjour la communauté.

    Je tente sans succès la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM flood WHERE `ladate` < DATE_SUB(CURDATE(), INTERVAL 3 MINUTE)
    Et ma table est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE `flood` (
      `ip` varchar(32) NOT NULL,
      `ladate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Quand je mets > au lieu de <, ça va tout effacer sans tenir compte du 3 minutes.
    Mais < efface rien.

    Pourtant, il faudrait que tout ce qui dépasse 3 minutes puissent être effacé de la base de données.

    De l'aide me serait bien utile et apprécié.

  2. #2
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    Supprime les dates supérieures à la date courante + 03 minutes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM flood WHERE `ladate` > (DATE_ADD(CURDATE(), INTERVAL '3:0' MINUTE_SECOND))

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Citation Envoyé par Nazoïde Voir le message
    Supprime les dates supérieures à la date courante + 03 minutes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM flood WHERE `ladate` > (DATE_ADD(CURDATE(), INTERVAL '3:0' MINUTE_SECOND))
    J'essaie de comprendre:

    L'enregistrement d'une inscription se fait à 12h00
    Il est 13h10
    Comme ça fait plus de 3 minutes, l'enregistrement doit s'effacer.

    Est-ce que je dois comprendre quand vous dite dates supérieures?

    Et MINUTE_SECOND veut dire quoi?

  4. #4
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    tu veux supprimer toutes les dates inférieures à la date courante ajoutée de 03 minutes, si oui,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM flood WHERE `ladate` < (DATE_ADD(CURDATE(), INTERVAL '3:0' MINUTE_SECOND))

    ou alors toutes les dates du jour inférieures à la date courante ajoutée de 03 minutes?

  5. #5
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai testé avec une requête SELECT et après DELETE, j'obtiens le résultat suivant en remplaçant NOW()
    par la date et heure déterminée à l'avance.

    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM `flood` WHERE `ladate` < DATE_SUB(NOW(), INTERVAL 10 MINUTE)
    S'il est 13h00 mais que mon enregistrement était à 12h51, aucune ligne affectée.
    Mais, quand il sera 13h11 et plus, la ligne sera effacée.

    Le code ci-haut serait le bon puisque j'ai testé sous Wamp. Mais, il reste à tester sous LINUX.

    Je vais tester.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL]Trigger avec condition utilisant la date du jour
    Par Irish dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/12/2006, 22h17
  2. MYSQL - requete avec un intervale de DATE
    Par mastronic dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/08/2006, 16h25
  3. Réponses: 6
    Dernier message: 26/07/2005, 10h20
  4. BCB6 & Mysql(api) :pb avec requete
    Par o_live dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/03/2005, 15h12
  5. Requete de suppression avec en condition une date
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/04/2004, 09h23

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