हम DayName()
दिनांक के अनुरूप कार्यदिवस का नाम प्राप्त करने के लिए कार्य करें। हम सप्ताहांत को NOT IN ('Saturday', 'Sunday')
तक सीमित करने के लिए इस फ़ंक्शन के परिणाम का उपयोग करेंगे ।
साथ ही, हमें संख्या जेनरेटर श्रेणी को 10 तक बढ़ाने की आवश्यकता होगी . क्योंकि ऐसी संभावना है कि हम 5 सप्ताह के दोनों दिनों में 2 सप्ताहांत (कुल 4 दिन) में आ सकते हैं।
इसलिए, हमें 2 (सप्ताहांत के दिनों की पहली जोड़ी) + 5 (सप्ताह के दिन) + 2 (सप्ताहांत के दिनों की दूसरी जोड़ी) + 1 (6वें सप्ताह के दिन) =10 तारीखों पर विचार करने की आवश्यकता है। इस एज केस का एक उदाहरण तब होगा जब इनपुट की तारीख रविवार होगी।
हमें LIMIT 6
. का उपयोग करना होगा गैर-किनारे वाले मामलों में परिणाम को केवल 6 दिनों तक सीमित रखने के लिए।
स्कीमा (MySQL v5.7)
CREATE TABLE `HELPER_SEQ` (`I` tinyint(3) UNSIGNED NOT NULL);
INSERT INTO `HELPER_SEQ` (`I`) VALUES
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
क्वेरी
SELECT
DATE_FORMAT((DATE('2018-11-21') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')
AS VAR
FROM `HELPER_SEQ` AS S
WHERE S.`I` <= 10
AND DAYNAME(DATE_FORMAT((DATE('2018-11-21') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')) NOT IN ('SATURDAY', 'SUNDAY')
ORDER BY VAR DESC
LIMIT 6;
परिणाम
| VAR |
| ---------- |
| 2018-11-21 |
| 2018-11-20 |
| 2018-11-19 |
| 2018-11-16 |
| 2018-11-15 |
| 2018-11-14 |
एज केस डेमो - इनपुट तिथि:25 नवंबर 2018 (रविवार)
CREATE TABLE `HELPER_SEQ` (`I` tinyint(3) UNSIGNED NOT NULL);
INSERT INTO `HELPER_SEQ` (`I`) VALUES
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
क्वेरी #2
SELECT
DATE_FORMAT((DATE('2018-11-25') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')
AS VAR
FROM `HELPER_SEQ` AS S
WHERE S.`I` <= 10
AND DAYNAME(DATE_FORMAT((DATE('2018-11-25') - INTERVAL(S.`I` - 1) DAY), '%Y-%m-%d')) NOT IN ('SATURDAY', 'SUNDAY')
ORDER BY VAR DESC
LIMIT 6;
परिणाम
| VAR |
| ---------- |
| 2018-11-23 |
| 2018-11-22 |
| 2018-11-21 |
| 2018-11-20 |
| 2018-11-19 |
| 2018-11-16 |