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

लीप वर्ष में माइस्क्ल डेऑफ़ियर

जहां NOW() एक गैर-लीप वर्ष है 2011 , समस्या यह है कि 29 फरवरी के बाद लीप वर्ष में पैदा हुए किसी व्यक्ति के पास एक अतिरिक्त दिन होगा क्योंकि आप DAYOFYEAR का उपयोग कर रहे हैं जन्म वर्ष के विरुद्ध।

DAYOFYEAR('2004-04-01') // DAYOFYEAR(e.birthdate) Returns 92
DAYOFYEAR('2011-04-01') // DAYOFYEAR(NOW()) Returns 91

जहां आप DAYOFYEAR करते हैं , आपको वर्तमान वर्ष से जन्मतिथि चाहिए, जन्म के वर्ष की नहीं।

तो, इसके बजाय:

DAYOFYEAR(e.birthdate)

आप इसे इस साल इस तरह बदल सकते हैं:

DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthdate)) YEAR))

जो इनकी जन्मतिथि को रूपांतरित करता है:

'2004-04-01'

प्रति:

'2011-04-01'

तो, यहाँ संशोधित क्वेरी है:

SELECT      e.id,
             e.title,
             e.birthdate
 FROM        employers e
 WHERE       DAYOFYEAR(curdate()) <= DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthday)) YEAR))
 AND         DAYOFYEAR(curdate()) +14 >= DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthday)) YEAR))

29 फरवरी को जन्म लेने वाले लोग 1 मार्च को गैर-लीप वर्ष पर गिरेंगे, जो अभी भी दिन है 60



  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 कुप्पी के साथ कनेक्शन.commit () कॉल करने के बाद अद्यतन नहीं हो रहा (काम कर रहे)

  2. लारवेल और वाक्पटु प्रश्नों का उपयोग करके फ़िल्टर करने योग्य सूची बनाना

  3. क्या mysql डेटाबेस में सभी कॉलम को इंडेक्स करना सही है?

  4. MySQL त्रुटि बहुत अधिक कनेक्शन

  5. हटाएं - मैं लक्ष्य तालिका निर्दिष्ट नहीं कर सकता?