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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-27 14:31:26981Durchsuche

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

Berechnen von Geschäftszeiten in Oracle SQL

Bei der Arbeit mit Daten, die Zeitintervalle umfassen, ist es häufig erforderlich, Geschäftszeiten zu berücksichtigen, um die Stunden genau berechnen zu können zwischen angegebenen Zeiten. In Oracle SQL können Sie dies erreichen, indem Sie eine Kombination aus Datumsfunktionen und mathematischen Berechnungen nutzen.

Berechnen von Stunden mit Geschäftszeiten

Um die Differenz in Stunden zwischen a Start- und Endzeit basierend auf den Geschäftszeiten. Sie können die folgenden Schritte ausführen:

1. Konvertieren Sie Zeiträume in ganze Tage:

  • Berechnen Sie die volle Wochendifferenz zwischen dem Beginn und dem Ende der ISO-Wochen. Multiplizieren Sie diesen Wert mit (10/24) und (6/7), um ganze Tage zu berücksichtigen.
  • Fügen Sie die ganzen Tage für die letzte Woche innerhalb des Bereichs mit der Funktion LEAST( TRUNC( end_time ) - TRUNC( end_time, 'IW' ), 6 ) * (10/24).
  • Subtrahieren Sie die vollen Tage von den Wochentagen vor dem Startdatum mit LEAST( TRUNC( start_time ) - TRUNC( start_time, 'IW' ), 6 ) * (10/24).

2. Behandeln Sie die Stunden innerhalb des letzten Tages:

  • Fügen Sie die Stunden des letzten Tages mit LEAST( GREATEST( end_time - TRUNC( end_time ) - 8/24, 0 ), 10/24 ) hinzu.
  • Subtrahieren Sie die Stunden des Tages vor Beginn des Bereichs mit LEAST( GREATEST( start_time - TRUNC( start_time ) - 8/24, 0 ), 10/24 ).

3. Multiplizieren, um in Minuten umzuwandeln:

  • Multiplizieren Sie den obigen Ausdruck mit 24, um ihn von Bruchteilen ganzer Tage in Minuten umzuwandeln.

Beispielabfrage:

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;

Diese Abfrage berechnet die Stunden basierend auf den Geschäftszeiten für die bereitgestellten Beispieldaten unter Berücksichtigung die Wochenendstunden.

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

Stellungnahme:
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