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

सप्ताहांत के बिना तारीखों में विपर्ययण

हम 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 |

डीबी फिडल पर देखें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL के साथ एकाधिक कॉलम से सबसे छोटा मान चुनें

  2. MySQL का डिफ़ॉल्ट संयोजन latin1_swedish_ci क्यों है?

  3. यह हाइबरनेट MySQL कनेक्शन केवल-पढ़ने के लिए क्यों है?

  4. MySQL में दो तिथियों के बीच दिनों की संख्या कैसे खोजें

  5. मैं XAMPP के माध्यम से MySQL का उपयोग कैसे करूं?