Maison > base de données > tutoriel mysql > Comment calculer la durée d'une tâche en fonction des heures de bureau dans Oracle SQL ?

Comment calculer la durée d'une tâche en fonction des heures de bureau dans Oracle SQL ?

Linda Hamilton
Libérer: 2024-12-24 15:37:15
original
779 Les gens l'ont consulté

How to Calculate Task Duration Based on Business Hours in Oracle SQL?

Calculer les heures en fonction des heures de bureau dans Oracle SQL

Le calcul de la durée d'une tâche en fonction des heures de bureau est une exigence courante dans systèmes de gestion du personnel. La formule standard permettant de calculer le nombre d'heures entre une heure de début et une heure de fin n'intégrerait pas les heures de travail, ce qui pourrait entraîner une surestimation des heures. Pour résoudre ce problème, nous pouvons exploiter les solides capacités de manipulation de date et d'heure d'Oracle SQL pour ajuster le calcul en fonction des heures de bureau spécifiées.

Les exemples de données fournis contiennent des informations sur les tâches, les heures de début et de fin. La tâche consiste à calculer la durée de chaque tâche en tenant compte des heures de bureau, qui vont du lundi au samedi de 8h00 à 18h00.

Une approche consiste à utiliser une requête hiérarchique corrélée pour générer des jours de travail distincts. puis résumez les heures de chaque jour. La requête génère une ligne distincte pour chaque journée de travail potentielle pour chaque tâche. Il calcule ensuite l'heure de début de la journée de travail en déterminant l'heure ultérieure entre l'heure de début de la tâche et 8h00 ce jour-là. L'heure de fin est calculée de la même manière, en utilisant la valeur la plus basse entre l'heure de fin de la tâche et 18h00 ce jour-là.

Une fois les heures de début et de fin de chaque journée de travail déterminées, le nombre total d'heures peut être calculé en soustrayant l’heure de début de l’heure de fin. Les heures quotidiennes sont ensuite additionnées pour arriver au total des heures consacrées à chaque tâche.

Une solution alternative consiste à utiliser une formule qui tient directement compte des heures de travail. Cette formule considère plusieurs aspects :

  • La différence entre le début des semaines ISO (qui représente le nombre de semaines complètes) multiplié par le nombre d'heures disponibles par semaine (10 heures * 6 jours).
  • Le nombre de jours complets de la dernière semaine en calculant la différence entre la fin de la semaine et la fin de la semaine dernière.
  • Le nombre de jours avant la date de début par trouver la différence entre le début de la semaine et la date de début.
  • Le nombre d'heures de travail le dernier jour, qui est le plus faible de la différence entre l'heure de fin et la fin de la journée de travail ou 10 heures .
  • Le nombre d'heures de la veille du début de la plage, toujours en utilisant le plus faible de la différence entre l'heure de début et le début de la journée de travail ou 10 heures.

Multiplier cette formule par 24 la convertit en minutes puis la diviser par 15 donne le nombre d'heures de travail.

Les deux solutions calculent efficacement la durée des tâches en fonction de la heures de travail spécifiées, garantissant un suivi et un reporting précis du temps passé sur les tâches. Le choix entre les deux approches dépend de facteurs tels que la taille de l'ensemble de données, les considérations de performances et les exigences spécifiques de l'entreprise.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal