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

Requêtes MySQL Discussion :

Différence de dates avec échéance


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut Différence de dates avec échéance
    Bonjour,

    J'ai une table "plans_maint" qui stocke des plans de maintenance relatifs à des matériels. Le champ "date_proch_maint" de cette table stocke la date de prochaine maintenance.

    Je souhaite interroger cette table pour savoir quels plans arrivent à échéance et doivent déclencher des tâches de maintenance. Evidemment c'est très simple sauf qu'intervient un nombre de jours (20 jours) avant échéance pour prévenir assez tôt les techniciens.

    Ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM plans_maint WHERE (date_proch_maint-20)<now()
    Actuellement, cela me retourne toutes les lignes de la table. En fait, date_proch_maint (2011-10-31) - 20 me donne une date du style 20111011 ou parfois plus fantaisiste (20111083) et donc cela fausse la comparaison avec now() qui en plus comporte l'heure.

    Voilà j'espère être assez clair : comment faire la soustraction date_proch_main - 20 jours correctement pour la comparer à now() ?

    Merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Les joies de la GMAO !

    Quel est le typage de votre colonne date_proch_maint ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    Bonjour,

    date_proch_maint est de type date au format YYYY-MM-DD.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    En fait après de nouvelles recherches suite à ton message, puis en me plongeant dans mon code de gestion de session dont je me suis souvenu qu'il utilisait TIMEDIFF() pour voir quelles sessions effacer de la table sessions, j'ai trouvé l'instruction DATEDIFF()

    Donc si je fais DATEDIFF(date_proch_maint, NOW()) j'ai le nombre de jours entre la date de la future maintenance et aujourd'hui.

    Je retranche mes jours : 20 jours si je souhaite être prévenu 20 jours avant : DATEDIFF(date_proch_maint, NOW()) - 20

    Si c'est supérieur à 0 on fait rien sinon on déclenche une tâche de maintenance.

    Je crois que ça va marcher comme ça. Merci encore pour ton aide

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    Pour info voilà la requête finale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT plans_maint.FK_mat, params.ech_maint, plans_maint.date_proch_maint 
    FROM plans_maint, params 
    WHERE (DATEDIFF(plans_maint.date_proch_maint,NOW())-params.ech_maint)<0
    params.ech_maint stocke le nombre de jour car c'est paramétrable depuis l'interface utilisateur.

    J'ai donc comme résultat les plans de maintenance dont la date de prochaine maintenance arrive dans X jours (params.ech_maint) ou moins.

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

Discussions similaires

  1. [MySQL] Résultat insuffisant pour la différence deux dates avec une requête mysql
    Par onesat dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/08/2014, 13h14
  2. Différence entre Date avec jDateChooser
    Par minedun6 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/04/2013, 10h23
  3. [MySQL] Calcul de différence de dates avec BDD
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2012, 17h11
  4. Tester une différence de dates avec JQuery
    Par Alteus dans le forum jQuery
    Réponses: 3
    Dernier message: 07/02/2011, 19h31
  5. Différence de date avec getTime
    Par Orbiplanax dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/02/2009, 14h49

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