"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Oracle SQL में दो तिथियों के बीच व्यावसायिक घंटों की गणना कैसे करें?

Oracle SQL में दो तिथियों के बीच व्यावसायिक घंटों की गणना कैसे करें?

2025-02-06 पर पोस्ट किया गया
ब्राउज़ करें:397

] हालाँकि, यदि आपको व्यावसायिक घंटों में कारक की आवश्यकता है, तो गणना अधिक जटिल हो जाती है। शाम 6:00 बजे तक। गणना में इन घंटों को शामिल करने के लिए, आप दिनांक हेरफेर और सशर्त तर्क के संयोजन का उपयोग कर सकते हैं। निर्दिष्ट व्यावसायिक घंटों के आधार पर:

How to Calculate Business Hours Between Two Dates in Oracle SQL?
कार्य का चयन करें, समय शुरू, अंत समय, गोल( ( - आईएसओ सप्ताह की शुरुआत से पूरे सप्ताह के अंतर की गणना करें। । - अंतिम सप्ताह के लिए पूरे दिन जोड़ें। कम से कम (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_time

lock_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

    00 (बुध)
  • 2017-01-19 08:00:00 (thu)
  • । 2017-01-13 13:00:00 (FRI)
  • 2017-01-17 14:52:00 (tue)
  • 31.8666666666666667 ] D ]
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3