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

एसक्यूएल:साल के बिना दो तिथियों के बीच कहाँ?

इस समस्या के बारे में सोचने का सबसे अच्छा तरीका है कि आप अपनी तिथियों को वर्ष में दिन के अनुरूप 0 और 365 के बीच की संख्या में बदल दें। फिर केवल उन तिथियों को चुनने से जहां यह अंतर 14 से कम है, आपको दो सप्ताह का समय मिल जाता है।

जो साल की शुरुआत या अंत में टूट जाएगा। लेकिन सरल मॉड्यूलर अंकगणित आपको इसका उत्तर देता है।

सौभाग्य से, MySQL में DAYOFYEAR(date) है , इसलिए यह इतना जटिल नहीं है:

SELECT * FROM tbl t
WHERE 
  MOD(DAYOFYEAR(currdate) - DAYOFYEAR(t.the_date) + 365, 365) <= 14
  OR MOD(DAYOFYEAR(t.the_date) - DAYOFYEAR(currdate) + 365, 365) <= 14

वह अतिरिक्त + 365 इसकी आवश्यकता है क्योंकि MySQL का MOD ऋणात्मक संख्याएँ लौटाएगा।

यह उत्तर लीप वर्ष के लिए सही ढंग से खाता नहीं है। यदि चालू वर्ष एक लीप वर्ष नहीं है और वर्ष के अंत के 14 दिनों के भीतर की अवधि है, तो आप जनवरी में एक दिन चूक जाएंगे जिसे आपको शामिल करना चाहिए था। अगर आपको इसकी परवाह है, तो आपको 365 . को बदल देना चाहिए [the number of days in the year - 1 . के साथ ].



  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 में पीडीओ के साथ दशमलव/डबल/फ्लोट मानों को बांधने का सबसे अच्छा तरीका क्या है?

  2. MySQL:फुल आउटर जॉइन - मैं एक कॉलम को कैसे मर्ज कर सकता हूं?

  3. स्ट्रिंग में इमोटिकॉन्स का पता लगाएं

  4. मैं HTML सामग्री (MySQL) के लिए किस संरचना प्रकार का उपयोग करता हूं

  5. Mysql पर EntityManager JPA के साथ स्क्रिप्ट चलाएँ