Heim > Datenbank > MySQL-Tutorial > Wie berechnet man Geschäftszeiten zwischen zwei Daten in Oracle SQL?

Wie berechnet man Geschäftszeiten zwischen zwei Daten in Oracle SQL?

Patricia Arquette
Freigeben: 2025-01-01 09:21:10
Original
176 Leute haben es durchsucht

How to Calculate Business Hours Between Two Dates in Oracle SQL?

Berechnen Sie Stunden basierend auf Geschäftszeiten in Oracle SQL

In Oracle SQL kann die Berechnung von Stunden zwischen zwei Zeiträumen unkompliziert sein. Wenn Sie jedoch Geschäftszeiten berücksichtigen müssen, wird die Berechnung komplexer.

Angabe der Geschäftszeiten

Die angegebenen Geschäftszeiten sind Montag bis Samstag von 8:00 Uhr Von 18:00 bis 18:00 Uhr. Um diese Stunden in die Berechnung einzubeziehen, können Sie eine Kombination aus Datumsmanipulation und bedingter Logik verwenden.

SQL-Abfrage

Die folgende SQL-Abfrage bietet eine Lösung zur Stundenberechnung basierend auf dem angegebenen Geschäft Stunden:

SELECT task,
       start_time,
       end_time,
       ROUND(
         (
           -- Calculate the full weeks difference from the start of ISO weeks.
           ( TRUNC( end_time, 'IW' ) - TRUNC( start_time, 'IW' ) ) * (10/24) * (6/7)
           -- Add the full days for the final week.
           + LEAST( TRUNC( end_time ) - TRUNC( end_time, 'IW' ), 6 ) * (10/24)
           -- Subtract the full days from the days of the week before the start date.
           - LEAST( TRUNC( start_time ) - TRUNC( start_time, 'IW' ), 6 ) * (10/24)
           -- Add the hours of the final day
           + LEAST( GREATEST( end_time - TRUNC( end_time ) - 8/24, 0 ), 10/24 )
           -- Subtract the hours of the day before the range starts.
           - LEAST( GREATEST( start_time - TRUNC( start_time ) - 8/24, 0 ), 10/24 )
         )
         -- Multiply to give minutes rather than fractions of full days.
         * 24,
         15 -- Number of decimal places
       ) AS work_day_hours_diff
FROM   your_table;
Nach dem Login kopieren

Erklärung

  • Wochen: Die Abfrage berechnet zunächst die vollen Wochen innerhalb des Bereichs mit TRUNC( end_time, 'IW' ) und TRUNC( start_time, 'IW' ). Diese Berechnungen geben die Start- und Enddaten der ISO-Wochen an, die den Beginn und das Ende der Aufgabe enthalten.
  • Tage: Die Funktionen LEAST() und GREATEST() werden verwendet, um teilweise zu berücksichtigen Tage am Anfang und Ende des Bereichs, an denen möglicherweise keine Geschäftszeiten gelten.
  • Stunden: Die Differenz in Stunden für den letzten Tag und den Tag bevor der Bereich beginnt, werden auf ähnliche Weise berechnet.
  • Multiplikation: Die endgültige Berechnung multipliziert das Ergebnis mit 24, um Minuten in Stunden umzuwandeln.

Beispieldaten und Ausgabe

Mit den bereitgestellten Beispieldaten:

TASK | START_TIME | END_TIME
A | 16-JAN-17 10:00 | 23-JAN-17 11:35
B | 18-JAN-17 17:53 | 19-JAN-17 08:00
C | 13-JAN-17 13:00 | 17-JAN-17 14:52
D | 21-JAN-17 10:00 | 30-JAN-17 08:52
Nach dem Login kopieren

Die Abfrage gibt die folgenden Ergebnisse aus:

TASK START_TIME END_TIME WORK_DAY_HOURS_DIFF
A 2017-01-16 10:00:00 (MON) 2017-01-23 11:35:00 (MON) 61.583333333333333
B 2017-01-18 17:53:00 (WED) 2017-01-19 08:00:00 (THU) .116666666666667
C 2017-01-13 13:00:00 (FRI) 2017-01-17 14:52:00 (TUE) 31.866666666666667
D 2017-01-21 10:00:00 (SAT) 2017-01-30 08:52:00 (MON) 68.866666666666667

Diese Ergebnisse spiegeln genau die Anzahl der Arbeitsstunden basierend auf den angegebenen Geschäftszeiten wider.

Das obige ist der detaillierte Inhalt vonWie berechnet man Geschäftszeiten zwischen zwei Daten in Oracle SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage