Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL दो तिथियों के बीच कार्य दिवसों की संख्या खोजने के लिए कार्य करता है

यह अभिव्यक्ति -

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)

प्रारंभ दिनांक @S और समाप्ति दिनांक @E के बीच व्यावसायिक दिनों की संख्या की गणना करता है।

माना जाता है कि समाप्ति तिथि (@E) प्रारंभ तिथि (@S) से पहले नहीं है। DATEDIFF के साथ संगत है कि वही प्रारंभ तिथि और समाप्ति तिथि शून्य व्यावसायिक दिन देती है। छुट्टियों को अनदेखा करता है।

अंकों की स्ट्रिंग निम्नानुसार बनाई गई है। प्रारंभ दिनों और समाप्ति दिनों की एक तालिका बनाएं, पंक्तियों को सोमवार (सप्ताह के 0) से शुरू होना चाहिए और कॉलम सोमवार से भी शुरू होना चाहिए। सभी 0 (यानी सोमवार और सोमवार, मंगलवार और मंगलवार, आदि के बीच 0 कार्य दिवस हैं) के साथ शीर्ष बाएं से नीचे दाईं ओर विकर्ण भरें। प्रत्येक दिन के लिए विकर्ण से शुरू करें (हमेशा 0 होना चाहिए) और कॉलम में भरें ठीक है, एक समय में एक दिन। यदि आप सप्ताहांत के दिन (गैर-व्यावसायिक दिन) कॉलम पर उतरते हैं, तो व्यावसायिक दिनों की संख्या नहीं बदलती है, इसे बाईं ओर से ले जाया जाता है। अन्यथा, व्यावसायिक दिनों की संख्या एक से बढ़ जाती है। जब आप पंक्ति लूप के अंत तक वापस उसी पंक्ति की शुरुआत में पहुँचते हैं और तब तक जारी रखते हैं जब तक आप फिर से विकर्ण तक नहीं पहुँच जाते। फिर अगली पंक्ति पर जाएँ।

उदा. मान लें कि शनिवार और रविवार व्यावसायिक दिन नहीं हैं -

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 1 2 3 4 5 0 0
S| 1 2 3 4 5 5 0

फिर तालिका में 49 मानों को स्ट्रिंग में संयोजित करें।

अगर आपको कोई बग मिले तो कृपया मुझे बताएं।

-संपादित बेहतर तालिका:

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 4 0

बेहतर स्ट्रिंग:'012344440123333401222234011112340001234000123440'

बेहतर अभिव्यक्ति:

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में D.O.B फ़ील्ड से आयु कैसे प्राप्त करें?

  2. अपनी हार्ड डिस्क पर MySQL डेटाबेस स्थान कैसे खोजें?

  3. प्रमाणीकरण प्लगइन 'caching_sha2_password' लोड नहीं किया जा सकता

  4. MySQL - चयन क्वेरी के आधार पर अद्यतन क्वेरी

  5. JSON_MERGE_PATCH () - MySQL में JSON दस्तावेज़ों का RFC 7396 अनुपालन मर्ज करें