Рассчитайте часы на основе рабочих часов в Oracle SQL
в Oracle SQL, вычисление часов между двумя периодами времени может быть простым. Однако, если вам необходимо учитывать рабочие часы, расчет становится более сложным.
Спецификация рабочих часов
предоставленные рабочие часы с понедельника по субботу с 8:00 До 18:00. Чтобы включить эти часы в расчет, вы можете использовать комбинацию манипулирования датой и условной логикой.
]SQL Query
] Следующий запрос SQL предоставляет решение для расчета часов На основании указанных рабочих часов:
]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;
объяснение
start_time
work_day_hours_diff
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
2017-01-16 10:00:00 &&&] 2017-01-23 11:35:00 (mon) | 61.58333333333333 | b | |
---|---|---|---|
2017-01-17 14:52:00 (Tue) | 31.8666666666667 | D | |
2017-01-30 08:52:00 (mon) | 68.8666666666667 | ] | |
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3