Kira Jam Berdasarkan Waktu Perniagaan dalam Oracle SQL
Dalam Oracle SQL, pengiraan jam antara dua tempoh masa boleh menjadi mudah. Walau bagaimanapun, jika anda perlu mengambil kira waktu perniagaan, pengiraan menjadi lebih rumit.
Spesifikasi Waktu Perniagaan
Waktu perniagaan yang disediakan ialah Isnin hingga Sabtu dari jam 8:00 Pagi hingga 6:00 Petang. Untuk memasukkan jam ini ke dalam pengiraan, anda boleh menggunakan gabungan manipulasi tarikh dan logik bersyarat.
SQL Query
Pertanyaan SQL berikut menyediakan penyelesaian untuk mengira jam berdasarkan perniagaan yang ditentukan jam:
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;
Penjelasan
Sampel Data dan Output
Dengan sampel yang disediakan data:
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
Pertanyaan menghasilkan keputusan berikut:
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 |
Hasil ini menggambarkan dengan tepat bilangan waktu bekerja berdasarkan waktu perniagaan yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Waktu Perniagaan Antara Dua Tarikh dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!