Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Waktu Perniagaan Antara Dua Kali dalam Oracle SQL?

Bagaimana untuk Mengira Waktu Perniagaan Antara Dua Kali dalam Oracle SQL?

Susan Sarandon
Susan Sarandonasal
2024-12-27 14:31:26979semak imbas

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

Mengira Waktu Perniagaan dalam Oracle SQL

Apabila bekerja dengan data yang melibatkan selang masa, selalunya perlu mengambil kira waktu perniagaan untuk mengira jam dengan tepat antara masa yang ditentukan. Dalam Oracle SQL, anda boleh mencapai ini dengan memanfaatkan gabungan fungsi tarikh dan pengiraan matematik.

Mengira Waktu dengan Waktu Perniagaan

Untuk mengira perbezaan jam antara satu masa mula dan tamat berdasarkan waktu perniagaan, anda boleh mengikuti langkah berikut:

1. Tukar Tempoh Masa kepada Hari Penuh:

  • Kira perbezaan minggu penuh antara permulaan dan akhir minggu ISO. Darabkan nilai ini dengan (24/10) dan (6/7) untuk mengambil kira hari penuh.
  • Tambahkan hari penuh untuk minggu terakhir dalam julat menggunakan fungsi LEAST( TRUNC( end_time ) - TRUNC( end_time, 'IW' ), 6 ) * (10/24).
  • Tolak hari penuh daripada hari dalam seminggu sebelum tarikh mula menggunakan LEAST( TRUNC( start_time ) - TRUNC( start_time, 'IW' ), 6 ) * (10/24).

2. Mengendalikan Waktu Dalam Hari Akhir:

  • Tambah jam hari terakhir menggunakan LEAST( HEBAT( akhir_masa - TRUNC( akhir_masa ) - 8/24, 0 ), 10/24 ).
  • Tolak jam sehari sebelum julat mula menggunakan LEAST( GREATEST( start_time - TRUNC( masa_mula ) - 24/8, 0 ), 24/10).

3. Darab untuk Menukar kepada Minit:

  • Darab ungkapan di atas dengan 24 untuk menukarnya daripada pecahan hari penuh kepada minit.

Contoh Pertanyaan:

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;

Pertanyaan ini mengira jam berdasarkan waktu perniagaan untuk data sampel yang diberikan, dengan mengambil kira waktu hujung minggu.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Waktu Perniagaan Antara Dua Kali dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn