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

MS SQL Server Discussion :

Calculer la somme des heures à partir d'un champ datetime


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Calculer la somme des heures à partir d'un champ datetime
    Bonjour à tous,

    Voici le problème, je veux calculer la somme des heures travaillées par un employé / jour sachant qu'un employé utilise la pointeuse pour l'entrée/sortie, chaque fois qu'il pointe, le système insère dans la table correspondante: La date et l'heure de pointage dans un seul champ, l'action (Entrée/Sortie) et le nom de l'employé.

    C'est uregent SVP.

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    L'employé ne pointe t'il qu'une fois en rentrant et une fois en sortant ou peut il pointer entrée et sortie plusieures fois sur la journée ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Voici la table:
    EMP Date_Record Action
    ---------------------------------------------------
    Paul 2008-01-01 08:00:00 Entrée
    Paul 2008-01-01 09:30:00 Sortie
    Paul 2008-01-01 10:15:33 Entrée
    Paul 2008-01-01 17:00:00 Sortie

    Je veux calculer le nombre des heures travaillées par Paul le 01-01-2008

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    SVP est ce qu'il ya quelqu'un qui a une idée, SVP, c'est urgent

  5. #5
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    avec la fonction datediff, tu peux calculer un interval entre 2 dates. Mais je ne sais pas si tu peux faire ca dans une requete. Peut etre avec une boucle.
    Par contre, c'est dégueulasse de faire bosser Paul le 1er janvier

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Je crois qu'il y a pas une réponse serieuse dans ce forum, bon, y a t il un autre moyen de séléctionner tous les enregistrements de champ date et on les manipule dans un tel boucle en PHP

  7. #7
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Citation Envoyé par bilel.amri Voir le message
    Je crois qu'il y a pas une réponse serieuse dans ce forum, bon, y a t il un autre moyen de séléctionner tous les enregistrements de champ date et on les manipule dans un tel boucle en PHP
    Je trouve bien peu aimable ce type de réponse...
    Vous débarquez ici avec une question sans donner le DDL de vos tables. Des personnes viennent vous apportez des idées pour solutionner votre problème et vous ne faites que répétez que cela est urgent, que ça doit être fait très vite etc...
    Renseignez vous sur la fonction DATEDIFF, regardez comment ce font les boucles, curseur etc...

  8. #8
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par bilel.amri Voir le message
    Je crois qu'il y a pas une réponse serieuse dans ce forum, bon, y a t il un autre moyen de séléctionner tous les enregistrements de champ date et on les manipule dans un tel boucle en PHP
    Si nos réponses ne te conviennent pas, regarde dans la FAQ et dans les tuto.

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Jinroh77 Voir le message
    Je trouve bien peu aimable ce type de réponse...
    Vous débarquez ici avec une question sans donner le DDL de vos tables. Des personnes viennent vous apportez des idées pour solutionner votre problème et vous ne faites que répétez que cela est urgent, que ça doit être fait très vite etc...
    Renseignez vous sur la fonction DATEDIFF, regardez comment ce font les boucles, curseur etc...
    Concernant la table, elle est crée par un système de pointage automatique, et j'ai facilité la structure de la table avec 3 champs, en plus, DATEDIFF fonctionne entre deux dates et je crois que le problème est claire: calculer un tel nombre des heures travaillées pendant une journée par un tel employé!!
    S'il ya une solution, ou bien une idée de résolution, je vous remercie d'avance.

  10. #10
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Tu dois calculer l'interval entre ton entrée et ta sortie au moyen d'un datediff exprimé en jour je dirais et tu fais la somme de tous ces intervals pour savoir le nombre de minutes effectuées sur la journée... La somme de ces journées pour avoir le nombre de minute par mois, et ainsi de suite.

    Et vu qu'il n'y a aucune réponse sérieuse sur ce forum, je te suggère d'élever ce nombre de minutes calculé ci dessus à la puissance 5 et de m'engager à venir bosser chez vous

  11. #11
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Ptit_Dje Voir le message
    Tu dois calculer l'interval entre ton entrée et ta sortie au moyen d'un datediff exprimé en jour je dirais et tu fais la somme de tous ces intervals pour savoir le nombre de minutes effectuées sur la journée... La somme de ces journées pour avoir le nombre de minute par mois, et ainsi de suite.

    Et vu qu'il n'y a aucune réponse sérieuse sur ce forum, je te suggère d'élever ce nombre de minutes calculé ci dessus à la puissance 5 et de m'engager à venir bosser chez vous
    Monsieur,
    Concernant l'idée, elle est claire, j'ai déjà pensé à celle-ci avant de déposer le problème dans le forum, mais je cherche à trouver une réponse contenant la requete SQL de résolution

  12. #12
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    si tu relis tous les messages, tu trouveras la réponse. Tu utilises une boucle pour récupérer tes dates et tu utilises ensuite datediff pour calculer les écarts en minutes.
    En postant sur ce forum, tu pourras trouver des pistes qu'il faudra ensuite creuser pour obtenir ta réponse. Mais ne t'attend pas à obtenir la solution toute faite... surtout avec un tel niveau de respect vis à vis des gens qui prennent du temps pour te répondre.

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 968
    Points
    52 968
    Billets dans le blog
    6
    Par défaut
    Il semble effectivement que ce monsieur "bilel.amri" soit effectivement un malotru pour ne pas dire plus !

    Néanmoins laissons lui une chance et donnons lui une requête qui donne la solution à son problème...

    Soit les données suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE TTT (EMP VARCHAR(8), Date_Record DATETIME, Action VARCHAR(8))
     
    INSERT INTO TTT VALUES ('Paul', '2008-01-01 08:00:00', 'Entrée')
    INSERT INTO TTT VALUES ('Paul', '2008-01-01 09:30:00', 'Sortie')
    INSERT INTO TTT VALUES ('Paul', '2008-01-01 10:15:33', 'Entrée')
    INSERT INTO TTT VALUES ('Paul', '2008-01-01 17:00:00', 'Sortie')
    INSERT INTO TTT VALUES ('Marcel', '2008-01-01 08:22:00', 'Entrée')
    INSERT INTO TTT VALUES ('Marcel', '2008-01-01 09:30:00', 'Sortie')
    INSERT INTO TTT VALUES ('Marcel', '2008-01-01 10:25:33', 'Entrée')
    INSERT INTO TTT VALUES ('Marcel', '2008-01-01 17:11:00', 'Sortie')

    Alors le nombre d'heure décimale de chaque employé est calculé par la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT TIN.EMP, 
           CAST(DATEDIFF(minute, TIN.Date_Record, MIN(TOUT.Date_Record)) AS FLOAT) 
           / 60 AS NB_HEURE_DECIMALE
    FROM   TTT AS TIN
           LEFT OUTER JOIN TTT AS TOUT
                ON TIN.EMP = TOUT.EMP 
                   AND TIN.Date_Record < TOUT.Date_Record
    WHERE  TIN.Action = 'Entrée'
    GROUP  BY TIN.EMP, TIN.Date_Record
    ORDER  BY TIN.EMP
    Espérons que ce personnage saura dire merci !

    A +

  14. #14
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Thanks...

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

Discussions similaires

  1. calculer la somme des heures dans un état
    Par fahdmounkaila dans le forum WinDev
    Réponses: 3
    Dernier message: 10/08/2011, 15h53
  2. Calculer la somme des heures à partir d'un champ datetime
    Par bilel.amri dans le forum Langage SQL
    Réponses: 11
    Dernier message: 08/08/2008, 19h54
  3. [MySQL] N'afficher que l'heure à partir d'un champ 'DATETIME' ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/03/2007, 15h00
  4. [newbie]comment calculer la somme des nb pages sum()?
    Par megapacman dans le forum Débuter
    Réponses: 3
    Dernier message: 13/06/2006, 11h03
  5. [VBA-A] calcul du total des heures d'une période
    Par aibar dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/06/2006, 00h16

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