Calcul des heures de travail dans Oracle SQL
Lorsque vous travaillez avec des données impliquant des intervalles de temps, il est souvent nécessaire de prendre en compte les heures de travail pour calculer avec précision les heures entre des heures spécifiées. Dans Oracle SQL, vous pouvez y parvenir en exploitant une combinaison de fonctions de date et de calculs mathématiques.
Calcul des heures avec les heures ouvrables
Pour calculer la différence en heures entre un heure de début et de fin en fonction des heures de bureau, vous pouvez suivre ces étapes :
1. Convertir des périodes de temps en jours complets :
2. Gérer les heures au cours du dernier jour :
3. Multiplier pour convertir en minutes :
Exemple de requête :
SELECT task, start_time, end_time, ROUND( ( -- Calculate full weeks difference ( TRUNC( end_time, 'IW' ) - TRUNC( start_time, 'IW' ) ) * (10/24) * (6/7) -- Add full days for final week + LEAST( TRUNC( end_time ) - TRUNC( end_time, 'IW' ), 6 ) * (10/24) -- Subtract full days before start date - LEAST( TRUNC( start_time ) - TRUNC( start_time, 'IW' ), 6 ) * (10/24) -- Add hours of final day + LEAST( GREATEST( end_time - TRUNC( end_time ) - 8/24, 0 ), 10/24 ) -- Subtract hours of day before range starts - LEAST( GREATEST( start_time - TRUNC( start_time ) - 8/24, 0 ), 10/24 ) ) -- Multiply to convert to minutes * 24, 15 -- Number of decimal places ) AS work_day_hours_diff FROM your_table;
Cette requête calcule les heures en fonction des heures de travail pour les exemples de données fournis, en prenant en tenant compte des horaires du week-end.
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!