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

MySQL में महीने के नाम से ऑर्डर कैसे करें

समस्या:

आप महीने की संख्या के आधार पर पंक्तियों को क्रमबद्ध करना चाहते हैं, महीने के नाम दिए गए हैं (आप चाहते हैं कि जनवरी पहले दिखाया जाए, आखिरी दिसंबर)।

उदाहरण:

birthday तालिका में दो कॉलम होते हैं:नाम और birthday_month . महीनों को नामों में दिया जाता है, संख्याओं में नहीं।p>

<थ>जन्मदिन_माह
नाम
रोनन टीशा शून्य
दिसंबर 2020
एंजी जूलिया अप्रैल
नरेले डिलन अप्रैल
पर्डी केसी जनवरी
डोना नेल शून्य
ब्लेज़ ग्रीम अक्टूबर

आप पंक्तियों को birthday_month . के अनुसार क्रमित करना चाहते हैं ।

समाधान:

SELECT *
FROM birthday
ORDER BY STR_TO_DATE(CONCAT('0001 ', birthday_month, ' 01'), '%Y %M %d');

परिणाम इस तरह दिखता है:

<थ>जन्मदिन_माह
नाम
डोना नेल शून्य
पर्डी केसी जनवरी
एंजी जूलिया अप्रैल
नरेले डिलन अप्रैल
ब्लेज़ ग्रीम अक्टूबर
रोनन टीशा शून्य
दिसंबर अक्टूबर

चर्चा:

महीने के हिसाब से ऑर्डर करने के लिए, इस महीने के साथ एक तारीख बनाएं। ऐसा करने के लिए, STR_TO_DATE() फ़ंक्शन का उपयोग करें। यदि आपके पास 'Year Month Day . में एक स्ट्रिंग के रूप में संग्रहीत दिनांक है ' प्रारूप में, आप इसे STR_TO_DATE(date_string, '%Y %M %d') का उपयोग करके किसी तिथि पर कास्ट कर सकते हैं ।

सबसे पहले, आपको CONCAT () फ़ंक्शन का उपयोग करके एक स्ट्रिंग बनाने की आवश्यकता है। वर्ष कोई भी वर्ष हो सकता है जो आप चाहते हैं (उदा., 0001 ) और वह दिन कोई भी दिन हो सकता है जो आप चाहते हैं (उदा., 01 ):

CONCAT('0001 ', birthday_month, ' 01')

CONCAT() फ़ंक्शन सभी तर्कों को एक स्ट्रिंग में जोड़ता है। स्ट्रिंग 'Year Month Day . में होनी चाहिए ' प्रारूप, इसलिए दूसरा तर्क होना चाहिए birthday_month; पहला और तीसरा तर्क बस सही प्रारूप में होना चाहिए।

फिर, आपको STR_TO_DATE(date_string, '%Y %M %d') का उपयोग करके इस स्ट्रिंग को दिनांक में बदलने की आवश्यकता है। समारोह। इस फ़ंक्शन का दूसरा तर्क दिनांक का प्रारूप है। %Y वर्ष के लिए खड़ा है, %M महीने के लिए खड़ा है (इसका पूरा नाम, संख्या नहीं), और %d दिन के लिए खड़ा है।

STR_TO_DATE(CONCAT('0001 ', birthday_month, ' 01'), '%Y %M %d')

इसका उपयोग ORDER BY के साथ करें तिथि के अनुसार पंक्तियों को आरोही क्रम में क्रमबद्ध करने के लिए खंड। यदि आप पंक्तियों को अवरोही क्रम में देखना चाहते हैं, तो बस एक DESC संलग्न करें कीवर्ड, इस तरह:

SELECT *
FROM birthday
ORDER BY STR_TO_DATE(CONCAT('0001 ', birthday_month, ' 01'), '%Y %M %d') DESC;

ध्यान दें कि MySQL में, NULL आरोही क्रम में छँटाई करते समय s पहले प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय अंतिम होते हैं। साथ ही, समान birthday_month . वाली पंक्तियां यादृच्छिक क्रम में प्रदर्शित होते हैं (आप देख सकते हैं Angie Julia तीसरा और Narelle Dillan चौथा, या Narelle Dillan तीसरा और Angie Julia चौथा)।


  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 या पर्ल एंड पर)?

  2. OpenCart में एक कस्टम शिपिंग विधि बनाएँ:भाग दो

  3. सीएसवी डेटा को पायथन में MySQL में लोड करें

  4. एसक्यूएल दो टेबल में शामिल हों

  5. क्या मैसकल एक कॉलम को विभाजित कर सकता है?