] हालाँकि, यदि आपको व्यावसायिक घंटों में कारक की आवश्यकता है, तो गणना अधिक जटिल हो जाती है। शाम 6:00 बजे तक। गणना में इन घंटों को शामिल करने के लिए, आप दिनांक हेरफेर और सशर्त तर्क के संयोजन का उपयोग कर सकते हैं। निर्दिष्ट व्यावसायिक घंटों के आधार पर:
कार्य का चयन करें,
समय शुरू,
अंत समय,
गोल(
(
- आईएसओ सप्ताह की शुरुआत से पूरे सप्ताह के अंतर की गणना करें।
।
- अंतिम सप्ताह के लिए पूरे दिन जोड़ें।
कम से कम (trunc (end_time) - trunc (end_time, 'iw'), 6) * (10/24)
- शुरुआत की तारीख से पहले सप्ताह के दिनों से पूरे दिनों को घटाएं।
- कम से कम (trunc (start_time) - trunc (start_time, 'iw'), 6) * (10/24)
- अंतिम दिन के घंटे जोड़ें
कम से कम (सबसे बड़ा (end_time - trunc (end_time) - 8/24, 0), 10/24)
- रेंज शुरू होने से पहले दिन के घंटों को घटाएं।
- कम से कम (सबसे बड़ी (start_time - trunc (start_time) - 8/24, 0), 10/24)
)
- पूरे दिनों के अंशों के बजाय मिनट देने के लिए गुणा करें।
* 24,
15 - दशमलव स्थानों की संख्या
) के रूप में कार्य करें _day_hours_diff
Your_table से; ') और ट्रंक (start_time,' iw ')। ये गणना कार्य की शुरुआत और अंत वाले आईएसओ सप्ताह की शुरुआत और अंत तिथियां देती हैं। सीमा की शुरुआत और अंत में दिन, जहां व्यावसायिक घंटे लागू नहीं हो सकते हैं। ]
कार्य | Start_time | अंत समय A | 16-जन -17 10:00 | 23-जनवरी -17 11:35 बी | 18-जनवरी -17 17:53 | 19-जनवरी -17 08:00 सी | 13-जनवरी -17 13:00 | 17-जन -17 14:52 D | 21-जनवरी -17 10:00 | 30-Jan-17 08:52
क्वेरी निम्नलिखित परिणामों को आउटपुट करता है:
कार्य
End_timelock_day_hours_diff
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;
61.58333333333333333
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3