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 :

Différence entre deux dates avec condition


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut Différence entre deux dates avec condition
    Bonjour,
    Je suis en train de faire un site web pour le travail.

    Nous avons une base de données en MySQL dans laquelle se trouve 2 attributs : debutPanne et finPanne.
    Tous deux en timestamp.

    J'aimerais faire un écart (en heures) entre ces deux dates avec la fonction TIMEDIFF(finPanne, debutPanne).
    Jusque là pas de soucis.
    Mais voilà nous voulons intégrer une condition en fonction des horaires de bureau. Nous faisons 8h - 17h.
    Si jamais la date est différente entre debutPanne et finPanne, il ne faudrait prendre en compte dans notre calcul que ce créneau horaire.
    Ceci est pour faire une moyenne sur le traitement des pannes avec affichage d'un indicateur (un feu tricolore en fonction du nombre d'heures passées).

    J'espère m'être exprimé correctement.
    Je vous remercie d'avance.
    J'attends vos réponses avec impatience

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    Un truc comme ca pourrait fonctionner peut-être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TIMEDIFF(finPanne, debutPanne) - DateDiff (debutPanne, finPanne) * 15
    le 15 est le nombre d'heure qui ne compte pas (entre 17H00 -> 8H00)

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    Merci.
    Ca va beaucoup m'aider

    Maintenant reste plus qu'à faire intervenir une condition si un week-end est compris entre les deux dates.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    a oui merde pas penser, la ca va etre plus dur :p

  5. #5
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    si tu compte que ca dure forcément moins de 7 jours tu peux faire un comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select IF(Weekday(finPanne) >= Weekday(debutPanne),TIMEDIFF(finPanne, debutPanne) - DateDiff (debutPanne, finPanne) * 15,
    TIMEDIFF(finPanne, debutPanne) - DateDiff (debutPanne, finPanne) * 15 - 2)

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    masi bon pas très propre, et si après tu veux ajouter les jours fériés par exemple c'est impossible, la tu devrais plutot faire un script en PHP qui le calcule !!!

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Par défaut
    Autre petit soucis dans ces commandes :

    TIMEDIFF() renvoie un time, donc de la forme : HH:MM:SS.
    Et DATEDIFF() un entier.

    Comment transformer un time en entier?

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    oups je n'ai pas lu la doc !!

    tu transforme avec la fonction que tu as besoin, ici tu veux des heures, donc avec la fonction HOUR() probablement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HOUR(TIMEDIFF(......,.....))

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2006, 14h04
  2. Nombre de minutes de différence entre deux dates
    Par Oberown dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 05/05/2006, 15h41
  3. Différence entre deux dates
    Par Azharis dans le forum Access
    Réponses: 3
    Dernier message: 11/01/2006, 10h58
  4. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  5. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34

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