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 :

Calcule sur les dates en elévant certaine heures


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut Calcule sur les dates en elévant certaine heures
    Salut je cherche à faire en mysql un calcule sur une date d'ouverture et de fermeture d'incident.

    En gros je gère des problème informatique et ke veu que certaine chose soit faite automatiquement.

    Voile dans le temps ecouler entre la date d'ouverture et de fermeture et veu enlever les soir à partir de 18h jusqu'au matin 9H et les week end
    C'est possible ???

    Merci

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Ce que tu veux obtenir, en clair, c'est une durée en nombre heures et minutes entre une date/heure de début et une date/heure de fin, déduction faite des éventuelles 63h du week-end (vendredi 18h au lundi 9h) et de 15h pour les autres nuits de 18h à 9h.
    C'est bien ça ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    Oui en effet ça s'avoisine à ça

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par kfmystik Voir le message
    Oui en effet ça s'avoisine à ça
    si ça s'avoisine, ce que ce n'est pas tout à fait ça.
    Alors où se cache la différence ou la nuance ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    Et si possible virer les Jour Férié...

    Mais en tant de dévéloppeur java peut etre que j'en démande trop à mysql ???

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Pour les jours fériés, du fait du manque d'universalité de la notion, une table des fériés me semble requise.
    Sinon, tu ne m'as pas répondu pour les éventuelles nuances.
    Par ailleurs, quelle est la structure de la table ? les colonnes début et fin peuvent-elles être NULL ? La période peut-elle s'étendre sur plus de deux semaines ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    En faite n'a pas de nuance entre ce que j'ai dis et ce que ta compris à part les jours fériés que je n'avais pas précisée...

    les dates d'ouvertures ne peuvent pas être null mais la date de fermeture si.....

    Pour la structure de la tables je l'ai mis en peice jointes

    Et pour la période ça peut même s'étaler sur 1 ans ........
    Images attachées Images attachées  

  8. #8
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par kfmystik Voir le message
    Et pour la période ça peut même s'étaler sur 1 ans
    1 ans c'est 367 jours ? Non je rigole
    Je vais regarder ça ce soir, mais ça ne m'a pas l'air infaisable.
    @+
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    lol
    ça rassure...

    Merci de teon aide en tous cas

  10. #10
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Encore trois questions :
    1. C'est quoi la colonne date_mod ?
    2. Quelque chose applique une contrainte d'intégrité sur la table pour empêcher que closedate < date ?
    3. Les colonnes de type D sont des dates ou des datetime ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    date mod c'est la date de modification

    D c'est des types date.. et les pas de besoins de contraintes car c'est coté serveur et la date est automatiquement renseigner

  12. #12
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Si ce sont des types date, ça veut dire qu'on a pas l'heure de début ni l'heure de fin. Je prends par défaut au milieu de 9h et 18h c'est à dire 13h30 ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    Si bien sur que l'heure est inclus dedans...........

  14. #14
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Extrait de la doc MySQL
    Le tableau suivant présente le format de la valeur ``zéro'' de chaque type :
    Column type valeur du ``zéro''
    DATETIME '0000-00-00 00:00:00'
    DATE '0000-00-00'
    TIMESTAMP 00000000000000 (la longueur dépend de la taille de l'affichage)
    TIME '00:00:00'
    YEAR 0000
    Je maintiens donc qu'une colonne de type DATE ne contient pas l'heure.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  15. #15
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    dsl l'erreur venait de ma part car les valeurs ont bien les heures inclut

  16. #16
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Re-Saluton,
    Désolé, j'ai été pris par pas mal d'autres choses (notamment le casse-tête du calcul de la résultante d'une liste d'angle dans ce même forum, que je n'ai pas encore résolu).
    Bon, après avoir relu Joe Celko et Fréd. Brouard, j'ai opté pour la création de deux tables de travail, une table des fériés et une table calendrier.
    Ces tables n'ont pas à figurer dans le schéma relationnel, idéalement il peut même s'agir de tables temporaires.
    Je te joins le résultat de mes cogitations.Tout d'abord le dump de la base de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    -- Structure de la table `calendrier`
    -- 
     
    CREATE TABLE `calendrier` (
      `jour` datetime NOT NULL,
      PRIMARY KEY  (`jour`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `feries`
    -- 
     
    CREATE TABLE `feries` (
      `ferie` datetime NOT NULL,
      PRIMARY KEY  (`ferie`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `glpi_tracking`
    -- 
     
    CREATE TABLE `glpi_tracking` (
      `ID` tinyint(3) unsigned NOT NULL auto_increment,
      `date` datetime NOT NULL,
      `closedate` datetime default NULL,
      PRIMARY KEY  (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;
    Puis le script de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    -- Structure de la table `calendrier`
    -- 
     
    CREATE TABLE `calendrier` (
      `jour` datetime NOT NULL,
      PRIMARY KEY  (`jour`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `feries`
    -- 
     
    CREATE TABLE `feries` (
      `ferie` datetime NOT NULL,
      PRIMARY KEY  (`ferie`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `glpi_tracking`
    -- 
     
    CREATE TABLE `glpi_tracking` (
      `ID` tinyint(3) unsigned NOT NULL auto_increment,
      `date` datetime NOT NULL,
      `closedate` datetime default NULL,
      PRIMARY KEY  (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
    Enfin, le résultat de ce test :
    Array
    (
    [ID] => 1
    [date] => 2007-01-12 15:36:00
    [closedate] => 2008-06-15 11:54:00
    [heures] => 3213
    [residu] => 05:18:00
    )
    Array
    (
    [ID] => 2
    [date] => 2006-10-20 12:00:00
    [closedate] => 2007-07-15 10:00:00
    [heures] => 1638
    [residu] => 07:00:00
    )
    Array
    (
    [ID] => 3
    [date] => 2008-08-01 12:00:00
    [closedate] => 2008-08-31 10:00:00
    [heures] => 162
    [residu] => 07:00:00
    )
    Array
    (
    [ID] => 4
    [date] => 2008-10-17 09:00:00
    [closedate] => 2008-10-17 12:00:00
    [heures] => 03:00:00
    [residu] =>
    )
    Je suis à ta disposition pour toute demande d'explication.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  17. #17
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 479
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Puis le script de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    -- Structure de la table `calendrier`
    -- 
     
    CREATE TABLE `calendrier` (
      `jour` datetime NOT NULL,
      PRIMARY KEY  (`jour`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `feries`
    -- 
     
    CREATE TABLE `feries` (
      `ferie` datetime NOT NULL,
      PRIMARY KEY  (`ferie`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `glpi_tracking`
    -- 
     
    CREATE TABLE `glpi_tracking` (
      `ID` tinyint(3) unsigned NOT NULL auto_increment,
      `date` datetime NOT NULL,
      `closedate` datetime default NULL,
      PRIMARY KEY  (`ID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
    Enfin, le résultat de ce test :Je suis à ta disposition pour toute demande d'explication.
    Le script de test ?
    C'est la même chose que le dump de la base.

    Maljuna Kris, peux-tu publier le vrai script de test ?

  18. #18
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    j'ai opté pour la création de deux tables de travail, une table des fériés et une table calendrier
    Pourquoi deux tables?

    il peut même s'agir de tables temporaires.
    Oui mais aucun interêt question perf
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. calcul sur les dates
    Par housni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/08/2007, 16h38
  2. Oracle 10g - calcul sur les dates
    Par themateo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/08/2007, 10h50
  3. Calcul sur les dates
    Par Stargate SG1 dans le forum Access
    Réponses: 2
    Dernier message: 04/02/2007, 16h09
  4. [Dates] Calcul sur les dates...
    Par gawelldanor dans le forum Langage
    Réponses: 10
    Dernier message: 04/04/2006, 11h07
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

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