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

MySql डेटाबेस से दिनांक ब्लॉक की एक सरणी की आवश्यकता है

नीचे दिए गए आरेख को देखें जो कुछ अतिव्यापी समय अवधियों को दर्शाता है

X----|              |--------|         |------X
    |-------X      X------------X
                         |----|     X----|

X . के साथ चिह्नित किसी भी सन्निहित समयावधि की शुरुआत या समाप्ति किसी अन्य समय अवधि के भीतर नहीं आता है। अगर हम इन समयों को पहचान लें तो हम कुछ प्रगति कर सकते हैं।

यह क्वेरी सीमाओं की पहचान करती है।

SELECT boundary FROM
(

-- find all the lower bounds
    SELECT d1.StartDate AS boundary, 'lower' as type
    FROM dates d1
    LEFT JOIN dates d2 ON ( 
        d1.StartDate > d2.StartDate
        AND 
        d1.StartDate < d2.EndDate
    )
    WHERE d2.RowId IS NULL
    GROUP BY d1.StartDate

UNION

-- find all the upper bounds
    SELECT d1.EndDate AS boundary, 'upper' as type
    FROM dates d1
    LEFT JOIN dates d2 ON ( 
        d1.EndDate > d2.StartDate
        AND 
        d1.EndDate < d2.EndDate 
    )
    WHERE d2.RowId IS NULL
    GROUP BY d1.StartDate
) as boundaries

ORDER BY boundary ASC

आपके डेटा पर इस क्वेरी का परिणाम है

boundry    | type
------------------
2011-01-01 | lower
2011-02-20 | upper
2011-03-01 | lower
2011-04-01 | upper

आप जिस दिनांक सीमा का अनुसरण कर रहे हैं वह ऊपर दर्शाई गई लगातार निचली और ऊपरी सीमाओं के बीच है। थोड़े से पोस्ट प्रोसेसिंग के साथ, इन्हें आसानी से पाया जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATE () उदाहरण – MySQL

  2. MySQL चयन से मूल्यों को कैसे संयोजित करें

  3. त्रुटि:आपके PHP इंस्टॉलेशन में MySQL एक्सटेंशन गायब है जो वर्डप्रेस के लिए आवश्यक है

  4. ऑरोरा डीबी में कमांड बदलें (नया कॉलम जोड़ें)

  5. Nodejs, mysql और प्रतिक्रिया में अपलोड की गई छवियों के लिए शीर्षक जोड़ें