मैं परिणाम सेट को हल करने की कोशिश कर रहा हूं जो आने वाले जन्मदिन द्वारा क्रमबद्ध 5 निकटतम उपयोगकर्ताओं को प्रदान करता है। यह पूरी तरह से काम करता है जब तक लीप साल खेल में आता है। उदाहरण के लिए:mysql जन्मदिन अनुस्मारक, लीप वर्ष
- मई 15 वीं - 97 दिन बचे
शीर्ष परिणाम 1987 में एक जन्म है और कम 1988 u_birth से के रूप में संग्रहीत किया जाता है है - 96 दिनों
SELECT u_birth, IF(DAYOFYEAR(u_birth) >= DAYOFYEAR(NOW()),
DAYOFYEAR(u_birth) - DAYOFYEAR(NOW()),
DAYOFYEAR(u_birth) - DAYOFYEAR(NOW()) +
DAYOFYEAR(CONCAT(YEAR(NOW()), '-12-31'))
)
AS distance
FROM (blog_users)
WHERE `s_agehide` = 0
ORDER BY distance ASC
LIMIT 5
इस क्वेरी लिया जाता है और mysql पुस्तिका से संशोधित: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#c7489
धन्यवाद! मुझे एक नजर आएगी, इसे देखने के लिए कुछ मिनट दें =) – moodh
@ थक गया: ध्यान दें कि मैंने एक छोटा बदलाव किया है ताकि सभी लोग जिनके जन्मदिन आज हैं 0 की दूरी 0, दूरी 365 नहीं है। मैंने एक बदल दिया 'अब()' से 'DATE (अब())'। –
यह काम करता है जैसा कि यह माना जाता है, हालांकि मेरे पास एक फॉलोअप प्रश्न है: मैं तालिका से अतिरिक्त पंक्तियों को कैसे प्राप्त करूं? मैंने तीनों चयनों में कोशिश की है लेकिन कोई भाग्य नहीं है, मान लें कि मैं भी s_agehide को पुनः प्राप्त करना चाहता हूं। सभी मदद के लिए धन्यवाद! – moodh