ホームページ >データベース >mysql チュートリアル >Oracle SQLで2つの時間の間の営業時間を計算するにはどうすればよいですか?

Oracle SQLで2つの時間の間の営業時間を計算するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 14:31:26981ブラウズ

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

Oracle SQL での営業時間の計算

時間間隔を含むデータを扱う場合、多くの場合、時間を正確に計算するために営業時間を考慮する必要があります。指定された時間の間。 Oracle SQL では、日付関数と数学的計算を組み合わせてこれを実現できます。

営業時間による時間の計算

営業時間間の時間の差を計算するには営業時間に基づいて開始時刻と終了時刻を設定するには、次の手順に従います。

1.期間を丸日に変換:

  • ISO 週の開始と終了の間の完全な週の差を計算します。この値に (10/24) と (6/7) を掛けて、丸一日を計算します。
  • 関数 LEAST( TRUNC( end_time ) - TRUNC( end_time, 'IW' ), 6 ) * (10/24).
  • 前の曜日から丸の日数を減算します。 LEAST( TRUNC( start_time ) - TRUNC( start_time, 'IW' ), 6 ) * (10/24).

2を使用した開始日。最終日内の時間の処理:

  • LEAST( GREATEST( end_time - TRUNC( end_time ) - 8/24, 0 ), 10/24 ) を使用して最終日の時間を加算します。
  • LEAST( GREATEST( start_time - TRUNC( start_time ) - 8/24, 0 ), 10/24 ).

3.乗算して分に変換:

  • 上記の式に 24 を乗算して、丸一日の小数部分から分に変換します。

クエリの例:

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;

このクエリは、ビジネスに基づいて時間を計算します週末の時間を考慮した、提供されたサンプル データの時間。

以上がOracle SQLで2つの時間の間の営業時間を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。