(बस भविष्य पाठकों के लिए स्पष्ट करने के लिए: इस पुराने सवाल करने के लिए इस सवाल का जवाब एक इनाम है कि निहित वर्तमान जवाब संतोषजनक नहीं था की वजह से जोड़ा गया है, तो मैं अतिरिक्त के साथ इस समाधान/परिभाषा जोड़ा सभी प्रकार की स्थितियों के लिए "कॉन्फ़िगरेशन विकल्प"।)
Week of month
के लिए कोई मानक परिभाषा नहीं है, लेकिन एक सामान्य समाधान निम्न सूत्र हो सकता है, कि आप अपनी आवश्यकताओं के configurate कर सकते हैं:
select (dayofmonth(dateField) + 6 + (7 - "min_days_for_partial_week")
- (weekday(datefield) - "weekday_startofweek" + 7) MOD 7) DIV 7 as week_of_month;
जहां
"weekday_startofweek"
हो गया है सप्ताह के दिन बदल दिया गया है कि आप सप्ताह के पहले दिन (0 = Monday
, 6 = Sunday
) बनना चाहते हैं।
"min_days_for_partial_week"
पहले सप्ताह को सप्ताह 1 के रूप में गिनने की संख्या है (मान 1
से 7
)। सामान्य मान 1
(महीने का पहला दिन हमेशा सप्ताह 1 होता है), 4
(यह वर्ष के "आईएसओ सप्ताह" के समान होगा, जहां वर्ष का पहला सप्ताह उस सप्ताह में होता है जिसमें गुरुवार होता है, इसलिए कम से कम 4 दिन), और 7
(सप्ताह 1 पहला पूरा सप्ताह है)।
यह सूत्र 0
6
पर मान वापस करेगा। 0
मतलब यह है कि वर्तमान सप्ताह के एक आंशिक सप्ताह वह पर्याप्त दिनों सप्ताह 1 के रूप में गिनती करने के लिए नहीं है, और 6
तभी हो सकता है जब आप कम से कम 3 दिन के साथ आंशिक सप्ताह सप्ताह होने के लिए 1.
उदाहरण के लिए अनुमति देते है:
तो सप्ताह का पहला दिन सोमवार ("weekday_startofweek" = 0
) है और सप्ताह 1 हमेशा एक पूरे हफ्ते ("min_days_for_partial_week" = 7
) होना चाहिए, यह,
select (dayofmonth(dateField) + 6 - weekday(datefield)) DIV 7 as week_of_month;
उदाहरण के लिए आसान बनाने के लिए 2016-06-02
आप 0
मिल जाएगा, क्योंकि जून 2016 एक बुधवार के साथ शुरू किया y और 2016-06-06
के लिए आप 2016 जून
में 1
मिल जाएगा, क्योंकि यह पहले सोमवार है अपने सूत्र, जहां सप्ताह के पहले दिन हमेशा सप्ताह 1 ("min_days_for_partial_week" = 1
) है का अनुकरण करने के लिए, और सप्ताह रविवार से शुरू होता है ("weekday_startofweek" = 6
), इस
select (dayofmonth(dateField) + 12 - (weekday(datefield) + 1) MOD 7) DIV 7 as week_of_month;
हो यद्यपि आप है कि ठीक से 2 साल जहाँ आपके स्थिरांक से आया में पता करने के लिए टिप्पणी करने के लिए चाहते हो सकता है जाएगा।
मुझे लगता है कि यह सबसे सामान्य समाधान नहीं हो सकता है, लेकिन मुझे एक सप्ताह की आवश्यकता के लिए सोमवार को शुरू होता है। तो कहें कि पहला महीना रविवार को पड़ता है, कि रविवार सप्ताह 1 के रूप में गिना जाएगा। अगर यह समझ में आता है ... – YiSh